1. LeetCode 56. 合并区间
题目链接:https://leetcode.cn/problems/merge-intervals/description/
文章链接:https://programmercarl.com/0056.合并区间.html
视频链接:https://www.bilibili.com/video/BV1wx4y157nD
思路:
本题关键是重叠后的右边界的确定,取最大的右边界,而不是最小右边界。
class Solution {
// 传统方法// public int[][] merge(int[][] intervals) {// if (intervals.length==1) {// return intervals;// }// // 升序// Arrays.sort(intervals,(a,b)->{// return a[0]>b[0]?1:a[0]<b[0]?-1:0;// });// int[][] temp = intervals.clone();// List<int[]> res = new ArrayList<>();// int left=intervals[0][0];// int right=intervals[0][1];// for (int i=1;i<temp.length;i++) {// // 若不重叠// if (temp[i][0] > temp[i-1][1]) {// res.add(new int[]{left,right});// left = intervals[i][0];// right = intervals[i][1];// } else { // 重叠// temp[i][1] = Math.max(temp[i][1],temp[i-1][1]);// right = Math.max(right,intervals[i][1]);// }// }// res.add(new int[]{left,right});// return res.toArray(new int[res.size()][]);// }public int[][] merge(int[][] intervals) {if (intervals.length==1) {return intervals;}// 升序Arrays.sort(intervals,(a,b)->{return a[0]>b[0]?1:a[0]<b[0]?-1:0;});List<int[]> res = new ArrayList<>();int left=intervals[0][0];int right=intervals[0][1];for (int i=1;i<intervals.length;i++) {// 若不重叠if (intervals[i][0] > right) {res.add(new int[]{left,right});left = intervals[i][0];right = intervals[i][1];} else { // 重叠right = Math.max(right,intervals[i][1]);}}res.add(new int[]{left,right});return res.toArray(new int[res.size()][]);}
}
2. LeetCode 738.单调递增的数字
题目链接:https://leetcode.cn/problems/monotone-increasing-digits/description/
文章链接:https://programmercarl.com/0738.单调递增的数字.html
视频链接:https://www.bilibili.com/video/BV1Kv4y1x7tP
思路:
本题关键:
1️⃣一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),则让strNum[i - 1]减一,strNum[i]赋值9;
2️⃣采用从后向前遍历的方式。
解法:
class Solution {public int monotoneIncreasingDigits(int n) {String str = n + "";char[] arr = str.toCharArray();int start=arr.length;for (int i=arr.length-1;i>0;i--) {if (arr[i-1] > arr[i]) {arr[i-1]--;start = i;}}for (int i=start;i<arr.length;i++) {arr[i] = '9';}return Integer.parseInt(new String(arr));}
}
3. LeetCode 968.监控二叉树
跳过