想清楚循环不变量,控制边界条件 inclusive-exclusive or inclusive-inclusive, prefer first one.
防止溢出的两个句子
int mid = left +((right - left)/2);int middle = left +((right - left)>>1);// x >> n is equivalent to x / (2^n).// x << n is equivalent to x * (2^n).
27 Remove Elements in array
/*
equivalent
for(auto i = nums.begin(); i != nums.end(); ++i);
for(int i = 0; i < nums.size(); ++i)
for(int i = 0; i != nums.size(); ++i)
*/intremoveElement(vector<int>& nums,int val){int size = nums.size();for(auto i = nums.begin(); i != nums.end();++i){if(*i == val){for(auto j = i; j != nums.end()-1;++j){*j =*(j +1);// Shift elements to the left end()-1 because *(j+1) Boundary control!!!}--i;// Decrement the outer loop iterator to re-evaluate the current position--size;}}return size;}intremoveElement(vector<int>& nums,int val){int assign =0;for(int check =0; check != nums.size();++check)if(nums[check]!= val) nums[assign++]= nums[check];return assign;}