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()][]); } }