题解 | #不重叠的身高#

不重叠的身高

https://www.nowcoder.com/practice/b11cb8804f5d4eb3b221a019efe3ad5f

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param intervals int整型二维数组 
     * @return int整型二维数组
     */
   public int[][] mergeAnimalRanges (int[][] intervals) {
        // write code here
        Arrays.sort(intervals, new Comparator<int[]>() {    // 匿名内部类
            @Override
            public int compare(int[] e1, int[] e2) {
                // 如果第一列元素相等,则比较第二列元素
                if (e1[0]==e2[0]) return e1[1]-e2[1];   // e1[1]-e2[1]表示对于第二列元素进行升序排序
                return e1[0]-e2[0];                     // e1[0]-e2[0]表示对于第一列元素进行升序排序
            }
        });

        List<Integer> temp=new ArrayList<>();
        List<List<Integer>> ans=new ArrayList<>();
        for (int i=1;i<intervals.length;i++){
            if (intervals[i][0]<=intervals[i-1][1]&&intervals[i][0]>=intervals[i-1][0]){
                intervals[i][0]=intervals[i-1][0];
                if (intervals[i-1][1]>intervals[i][1]){
                    intervals[i][1]=intervals[i-1][1];
                }
            }else{
                temp.add(intervals[i-1][0]);
                temp.add(intervals[i-1][1]);
                ans.add(new ArrayList<>(temp));
            }
            temp.clear();
        }
        temp.add(intervals[intervals.length-1][0]);
        temp.add(intervals[intervals.length-1][1]);
        ans.add(new ArrayList<>(temp));

        int[][] tt = new int[ans.size()][];
        for (int i = 0; i < ans.size(); i++) {
            int[] arrays = ans.get(i).stream().filter(Objects::nonNull).mapToInt(j->j).toArray();
            tt[i] = arrays;
        }
        return tt;

    }
}

全部评论

相关推荐

qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务