56. 合并区间
文档讲解:代码随想录.合并区间
视频讲解:贪心算法,合并区间有细节!LeetCode:56.合并区间
状态:已完成
代码实现
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> result;
if (intervals.size() == 0) {
return result;
}
sort(intervals.begin(), intervals.end(),
[](vector<int> a, vector<int> b) {
return a[0] < b[0];});//新的排序方式
result.push_back(intervals[0]);
for (int i = 0; i < intervals.size(); i++) {
if (result.back()[1] >= intervals[i][0]) {
result.back()[1] = max(result.back()[1], intervals[i][1]);
} else {
result.push_back(intervals[i]);
}
}
return result;
}
};
心得体会
- 与前一天的不同之处在于重叠空间的处理逻辑
738.单调递增的数字
文档讲解:代码随想录.单调递增的数字
视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字
状态:已完成
代码实现
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string num_str = to_string(n);
int flag = num_str.size();
for (int i = num_str.size() - 1; i > 0; i--) {
if (num_str[i - 1] > num_str[i]) {
flag = i;
num_str[i - 1]--;
}
for (int i = flag; i < num_str.size(); i++) {
num_str[i] = '9';
}
}
return stoi(num_str);
}
};
心得体会
- 灵活的进行字符串和数组之间的转换
- 采用标志位记录转换的位置