leetcode-Algorithms-1762 |能看到海景的建筑物
原题有 n 座建筑物。给你一个大小为 n 的整数数组 heights 表示每一个建筑物的高度。建筑物的右边是海洋。如果建筑物可以无障碍地看到海洋,则建筑物能看到海景。确切地说,如果一座建筑物右边的所有建筑都比它 矮 时,就认为它能看到海景。返回能看到海景建筑物的下标列表(下标 从 0 开始 ),并按升序排列。示例 1:输入:heights = [4,2,3,1]输出:[0,2,3]解释:1 号建筑
·
原题
有 n 座建筑物。给你一个大小为 n 的整数数组 heights 表示每一个建筑物的高度。
建筑物的右边是海洋。如果建筑物可以无障碍地看到海洋,则建筑物能看到海景。确切地说,如果一座建筑物右边的所有建筑都比它 矮 时,就认为它能看到海景。
返回能看到海景建筑物的下标列表(下标 从 0 开始 ),并按升序排列。
示例 1:
输入:heights = [4,2,3,1]
输出:[0,2,3]
解释:1 号建筑物看不到海景,因为 2 号建筑物比它高
示例 2:
输入:heights = [4,3,2,1]
输出:[0,1,2,3]
解释:所有的建筑物都能看到海景。
示例 3:
输入:heights = [1,3,2,4]
输出:[3]
解释:只有 3 号建筑物能看到海景。
示例 4:
输入:heights = [2,2,2,2]
输出:[3]
解释:如果建筑物右边有相同高度的建筑物则无法看到海景。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/buildings-with-an-ocean-view
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
简单题
代码
package leetcode.Algorithms;
import java.util.ArrayList;
import java.util.List;
public class Solution_1762 {
public static void main(String[] args) {
int[] heights = {4, 2, 3, 1};
findBuildings(heights);
}
public static int[] findBuildings(int[] heights) {
List<Integer> list = new ArrayList<>();
list.add(heights.length-1);
int max = heights[heights.length - 1];
for (int i = heights.length - 1; i >= 0; i--) {
if (heights[i] > max) {
list.add(i);
max = heights[i];
}
}
Integer[] array = list.toArray(new Integer[list.size()]);
int[] re = new int[array.length];
int j=0;
for (int i = array.length-1; i >=0 ; i--) {
re[j] = array[i];
j++;
}
return re;
}
}
更多推荐
已为社区贡献9条内容
所有评论(0)