<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">从简单的开始,先养成习惯。考虑要不要安排刚起床就做两道,这样时间比较固定,而且开了头的事情潜意识里会更愿意完成它。</span>
‘
Remove Duplicates from Sorted Array
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.empty()) return 0;
int prei = 0, last = nums[0];
for (int i = 1; i<nums.size(); ++i) {
if (nums[i]!=last) {
nums[++prei] = last = nums[i];
}
}
return ++prei;
}
};
很基本,不过写的时候在考虑styling的选择,慢慢modify吧
看到第二种写法, 简单但更慢:
int removeDuplicates(vector<int>& nums) {
return distance( nums.begin(), unique(nums.begin(), nums.end()) );
}
unique returns end() of the modified array ,新array是consecutive duplicates被处理去除后得到。
Remove Duplicates from Sorted Array II
第一反应是加上一个counter数出现几次, int removeDuplicates(vector<int>& nums) {
if (nums.empty()) return 0;
int last = nums[0];
int prei = 0, ct = 1, allowed = 2;
for (int i=1; i<nums.size(); ++i){
if (last!=nums[i]){
nums[++prei] = last = nums[i];
ct = 1;
} else if (ct < allowed){
nums[++prei] = nums[i];
++ct;
}
}
return ++prei;
}
为了扩展性,加入变量allowed。不过看来是很慢的做法,考虑一下利用sorted性质来优化。