末日搭车指南
面向人生编程

导航

 

1 寻找数组的中心索引

 

class Solution {
    public int pivotIndex(int[] nums) {
        if(nums.length==1){return 0;}
        if(nums.length==0){return -1;}
       int left=0;
       for(int i=0;i<nums.length;i++){
           int right=0;
           for(int j=i+1;j<nums.length;j++){
               right=right+nums[j];
           }
          
           if(left==right){
               return i;
           }
           left=left+nums[i];
       } 
       return -1;
    }
}

 2 合并区间(二维数组)

 

 

class Solution {
    public int[][] merge(int[][] intervals) {
        if (intervals.length == 0) {
            return new int[0][2];
        }

        //对数组进行排序
        Arrays.sort(intervals, new Comparator<int[]>() {
            public int compare(int[] interval1, int[] interval2) {
                return interval1[0] - interval2[0];
            }
        });
        //新建一个列表
        List<int[]> merged = new ArrayList<int[]>();
        //对每一个区间进行循环
        for (int i = 0; i < intervals.length; ++i) {
            int L = intervals[i][0], R = intervals[i][1];
            //如果新列表里面最后一个区间的右边界小于  此区间的左边界
            if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) {
                merged.add(new int[]{L, R});//就直接把此区间加进去
            } else {
                //否则 前一个区间的右边界变成,这两个区间的两个右边界中最大的那个
                merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R);
            }
        }
        return merged.toArray(new int[merged.size()][]);
    }
}

 

posted on 2020-10-21 18:03  末日搭车指南  阅读(100)  评论(0编辑  收藏  举报