1762. Buildings With an Ocean View

2022/2/8 6:12:39

本文主要是介绍1762. Buildings With an Ocean View,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

My first solution is use two skacks, one stack store index, another one store value, the time complexity is O(n).

    public int[] findBuildings(int[] heights) {
        Stack<Integer> indexStk = new Stack<>();
        Stack<Integer> valueStk = new Stack<>();
        for(int i=heights.length-1;i>=0;i--){
            if(valueStk.isEmpty() || heights[i]>valueStk.peek()){
                indexStk.push(i);
                valueStk.push(heights[i]);
            }
        }
        int[] res = new int[indexStk.size()];
        int i=0;
        while(!indexStk.isEmpty()){
            res[i++]=indexStk.pop();
        }
        return res;
    }

The second stack, valueStk, can be replaced with an Integer.

    public int[] findBuildings(int[] heights) {
        int n = heights.length;
        Stack<Integer> indexStk = new Stack<>();
        int valueStk = heights[n-1];
        indexStk.push(n-1);
        for(int i=n-2;i>=0;i--){
            if(heights[i]>valueStk){
                indexStk.push(i);
                valueStk = heights[i];
            }
        }
        int[] res = new int[indexStk.size()];
        int i=0;
        while(!indexStk.isEmpty()){
            res[i++]=indexStk.pop();
        }
        return res;
    }

 



这篇关于1762. Buildings With an Ocean View的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程