1.原地排序,常数空间
原地排序:用一个指针控制,第一次从左到右把0拎到前面,第二次1
因为只有两个数,所以只要两个并列的for循环就行
用一个指针控制头部的范围。
void sortColors(vector& nums) { int n=nums.size(); int ptr=0; for(int i=0;i 2.合并区间
想到可以置为1和0来代表是否包括在区间里了,但是实现好难,老提示我溢出了,还是看看答案吧。
二维vector我也不熟练,还把它跟python的对组搞混了
记住: merged.push_back({L, R});是给二维vec插入元素的方法
答案的方法是先放第一个区间进去,然后将剩下的与第一个比较。
intervals.begin()是二维数组第一个组的第一个数,.end()是最后一组的第一个数
.back()返回最后一个数
vector> merge(vector >& intervals) { if (intervals.size() == 0) { return {}; } sort(intervals.begin(), intervals.end()); vector > merged; for (int i = 0; i < intervals.size(); ++i) { int L = intervals[i][0], R = intervals[i][1]; if (!merged.size() || merged.back()[1] < L) { merged.push_back({L, R}); } else { merged.back()[1] = max(merged.back()[1], R); } } return merged; }



