LeetCode——移除元素
阿新 • • 發佈:2018-12-10
雙指標法:
int removeElement(vector<int>& nums, int val) { auto p1_head = nums.begin(); auto p2_head = p1_head; for(; p1_head != nums.end(); ++p1_head) { if(*p1_head != val) { *p2_head = *p1_head; ++p2_head; } } return p2_head - nums.begin(); }
當要刪除的元素很少時:
int removeElement(vector<int>& nums, int val) { auto p1_head = nums.begin(); vector<int> :: size_type count = 0; while(p1_head < nums.end() - count) { if(*p1_head == val) { *p1_head = *(nums.end() - count - 1); count++; } else ++p1_head; } return nums.end() - count- nums.begin();