day4 removeElement & nextPer
2016-08-22 本文已影响8人
陈十十
-
To do
又到了室内冻死人的季节
两周了。。停滞在了这。。真是惭愧23333---
今晚健身房回家后更番,明天开始早起刷一个半小时再去上班,7:40-9:10am
int removeElement(vector<int>& nums, int val) {
int nextWritter = -1;
for (int scanner=0; scanner<nums.size(); ++scanner) {
if (nums[scanner]!=val) {
nums[++nextWritter] = nums[scanner];
}
}
return nextWritter+1;
}
or
int removeElement(vector<int>& nums, int val) {
return distance( nums.begin(), remove(nums.begin(), nums.end(), val) );
}
2] Next Permutation
一开始没有找清楚规律,看好pivot之右是什么情况,为什么
void nextPermutation(vector<int>& nums) {
if (nums.size() < 2) return;
for (auto r=nums.end()-1; r>nums.begin(); --r) {
if (*(r-1) < *r){
auto pivot = r-1;
for (auto i=nums.end()-1; i>=r; --i) {
if (*i>*pivot) {
swap(*i, *pivot); //CAREFUL NOT TO SWAP ITERATOR
reverse(pivot+1, nums.end());
return;
}
}
}
}
reverse(nums.begin(), nums.end());
return;
}