Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. int removeDuplicates(vector<int>& nums) {
  2. if (nums.size() == 0)
  3. {
  4. return 0;
  5. }
  6. auto start = nums.begin(), end = nums.end();
  7. int last_value = *(nums.end() - 1);
  8. for (auto it = nums.begin(); it != end;)
  9. {
  10. int find_value = *it;
  11. auto upper = upper_bound(start, end, find_value); //Find the last occurring index of this number
  12. iter_swap(start, it);
  13. ++start;
  14. if ((upper != end) || ((upper == end) && (find_value == last_value)))
  15. {
  16. it = upper;
  17. }
  18. else
  19. {
  20. ++it;
  21. }
  22. }
  23. return distance(nums.begin(), start);
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement