面试经典150题(45-46)

leetcode 150道题 计划花两个月时候刷完,今天(第十九天)完成了2道(45-46)150:

45.(452. 用最少数量的箭引爆气球)题目描述:

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。
一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足  xstart ≤ x ≤ xend,则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出之后,可以无限地前进。
给你一个数组 points ,返回引爆所有气球所必须射出的 最小 弓箭数 。

第一版(题目有点抽象,但是画一下就可以很清晰的理解,再加上昨天刚做的区间合并,所以就还可以)

class Solution {
    
    
    public int findMinArrowShots(int[][] points) {
    
    
        int len=points.length;
       Arrays.sort(points,(v1,v2)->(Integer.compare(v1[0], v2[0])));
        int index=0;
        int resCount=0;
        int right=points[0][1];
        while(index<len){
    
    
            resCount++;
            right=points[index][1];
            // 找能合并的 然他们就是一箭
            while(index+1<len&&right>=points[index+1][0]){
    
    
                right=Math.min(right,points[index+1][1]);
                index++;
            }
            index++;
        }
        return resCount;
    }
}

46.(20. 有效的括号)题目描述:

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号

第一版(说实话,写这道题时候我都忘了栈有哪些方法,只记住了 pop push 把peek 没想起来,真的是平时用到时候太少了。。)

class Solution {
    
    
    public boolean isValid(String s) {
    
    
        int len=s.length();
        if(len%2!=0){
    
    
            return false;
        }
        Stack<Character> stack=new Stack();
        stack.push(s.charAt(0));
        int index=1;
        while(index<len){
    
    
            char ch=s.charAt(index++);
            if(ch==')'){
    
    
                if(stack.isEmpty()||stack.peek()!='('){
    
    
                    return false;
                }
                stack.pop();
            }else if(ch=='}'){
    
    
                 if(stack.isEmpty()||stack.peek()!='{'){
    
    
                    return false;
                }
                stack.pop();
            }else if(ch==']'){
    
    
                 if(stack.isEmpty()||stack.peek()!='['){
    
    
                    return false;
                }
                stack.pop();
            }else{
    
    
                stack.push(ch);
            }

        }
        return stack.isEmpty();
    }
}

越来越懒系列。。白天肝了一天超鬼王,晚上才想起来要leetcode 差点今天就拖更了,我就骗自己说就做一道题吧,我的惰性太大了,但是也做了一道也算战胜了一半吧。

加油,早日跳槽!!!

猜你喜欢

转载自blog.csdn.net/weixin_44061648/article/details/135176589