[LeetCode]57. 插入区间(java实现)模拟题

[LeetCode]57. 插入区间(java实现)模拟题

  • 1. 题目
  • 2. 读题(需要重点注意的东西)
  • 3. 解法
  • 4. 可能有帮助的前置习题
  • 5. 所用到的数据结构与算法思想
  • 6. 总结

1. 题目

[LeetCode]57. 插入区间(java实现)模拟题_第1张图片
[LeetCode]57. 插入区间(java实现)模拟题_第2张图片

2. 读题(需要重点注意的东西)

思路:
将没有交集的部分保留,将有交集的部分合并后保留即可。

3. 解法

---------------------------------------------------解法---------------------------------------------------

class Solution {
    public int[][] insert(int[][] a, int[] b) {
        int n = a.length;
        List<int[]> list = new ArrayList<>();
        int k = 0;
        // 左边完全没交集的部分
        while(k < n && a[k][1] < b[0]) list.add(a[k++]);
        // 中间有交集的部分进行合并
        if(k < n ){
            b[0] = Math.min(b[0],a[k][0]); // 修改newInterval左端点
            while(k < n && a[k][0] <= b[1]) b[1] = Math.max(a[k++][1],b[1]);
        }
        list.add(b);
        // 右边完全没交集的部分
        while(k < n ) list.add(a[k++]);
        return list.toArray(new int[0][]);
    }
}

可能存在的问题:

4. 可能有帮助的前置习题

5. 所用到的数据结构与算法思想

  • Java数据结构—List(链表、顺序表的定义及其基本操作)

6. 总结

你可能感兴趣的:(LeetCode深度解析,深度优先,leetcode,java)