第十一周:

第十一周:

题解:

leetcode:4

public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        //我们规定第一个数组的长度较小!
        if(nums1.length>nums2.length){
            return findMedianSortedArrays(nums2,nums1);
        }
        int m=nums1.length,n=nums2.length;

        int midres1=0,midres2=0;
        //本质就是对nums1中的索引进行二分
        int left=0,right=nums1.length;
        while(left<right){
            int mid=(left+right)/2;
            int mid_j=(m+n+1)/2-mid;//nums2数组中对应的索引

            int max1=(mid==0?Integer.MIN_VALUE:nums1[mid-1]);
            int min1=(mid==m?Integer.MAX_VALUE:nums1[mid]);
            int max2=(mid==0?Integer.MIN_VALUE:nums2[mid_j-1]);
            int min2=(mid==n?Integer.MAX_VALUE:nums2[mid]);

            //判断i
            if(max1<=min2){//nums1[mid-1]<=nums2[mid]
                midres1=Math.max(max1,max2);
                midres2=Math.min(min2,min1);
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        return (m+n)%2==0?(midres1+midres2)/2.0:midres1;
    }

leetcode:20

public boolean isValid(String s) {
        Stack<Character>stack = new Stack<Character>();
        for(char c: s.toCharArray()){//遍历S,遇到左边的就压入对应的,遇到右边的就弹出!
            if(c=='(')stack.push(')');
            else if(c=='[')stack.push(']');
            else if(c=='{')stack.push('}');
            else if(stack.isEmpty()||c!=stack.pop())return false;
        }
        return stack.isEmpty();
    }

leetcode:71

public static String simplifyPath(String path) {
        String[] str=path.split("/");

        Stack<String> stack=new Stack();
        for (int i = 1; i < str.length; i++) {//注意要从1开始
            if(str[i].equals("..")){//返回上一级
                if(!stack.isEmpty())//且不为空
                    stack.pop();//删除最后一个
                else continue;
            }else if(!str[i].equals(".")&&!str[i].equals("")){
                stack.add('/'+str[i]);
            }
        }
        StringBuffer res=new StringBuffer();//比sbuilder快一点
        int size=stack.size();
        for (int i = 0; i < size; i++) {
            res.append(stack.get(i));
        }
        return size==0?"/":res.toString();
    }

知识:《疯狂的java讲义》看到P200了,然后下周得开始复习没听课的课了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值