LeetCode56. 合并区间
public int[][] merge(int[][] intervals) {
if(intervals.length==0) return null;
//排序
Arrays.sort(intervals,(x,y)->{return Integer.compare(x[0], y[0]);
});
//合并区间
List<int[]> res = new ArrayList<>();
for(int i=0;i<intervals.length-1;i++) {
if(intervals[i][1]>=intervals[i+1][0]) {
//记录最右区间和最左区间
intervals[i+1][0]=Math.min(intervals[i][0], intervals[i+1][0]);
intervals[i+1][1]=Math.max(intervals[i][1], intervals[i+1][1]);
}else {
//当不符合时记录下本区间
res.add(intervals[i]);
}
}
res.add(intervals[intervals.length-1]);
return res.toArray(new int[res.size()][]);
}
LeetCode738.单调递增的数字
/**
* 正着倒着应该都一样 需要好到第一处不符合的位置,把后面的所有值都赋成9
* @param n
* @return
*/
public int monotoneIncreasingDigits(int n) {
String s = String.valueOf(n);
char[] chars = s.toCharArray();
int start = s.length();
for (int i = s.length() - 2; i >= 0; i--) {
if (chars[i] > chars[i + 1]) {
chars[i]--;
start = i+1;
}
}
for (int i = start; i < s.length(); i++) {
chars[i] = '9';
}
return Integer.parseInt(String.valueOf(chars));
}