本文共 1070 字,大约阅读时间需要 3 分钟。
题目:
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example,
Given input array nums = [1,1,2]
,
Your function should return length = 2
, with the first two elements of nums being 1
and 2
respectively. It doesn't matter what you leave beyond the new length.
思路:给定一个有序vector,去年其中重复的数字后,并返回新vector的长度。
代码:
class Solution {public: int removeDuplicates(vector & nums) { if (nums.size()<2){ return nums.size();//如果大小为1或者为空,则直接返回大小,不可能有重复 } else{ int a = *(nums.begin());//初始第一个数 for (vector ::iterator iter = nums.begin() + 1; iter != nums.end();){ if (a == *iter){//判断下一个数是否与前一个数相等 if ((iter + 1) == nums.end()){//相等情况下,如果iter已经是最后一个数的位置,删除当前位置的数,并break iter = nums.erase(iter); break; } else{//如果不是最后位置,则直接删除当前位置的数 iter = nums.erase(iter); } } else{//如果不相等,则将a赋值为下一个数,iter递增 a = *iter; ++iter; } } return nums.size(); } }};
转载地址:http://unmii.baihongyu.com/