思路:
这道题其实是这个数组是有序的,那么我们就应该知道,相同的数字就是在一起的,是道经典的题,去除相同元素的编程题,那么我们就可以用双指针来做,i,j两个指针,当遍历到不一样的元素的时候,就把 i 上的元素放到 j+1 的位置上来即可。
代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()==0) return 0;
int i,j;
for(j=0,i=1;i<nums.size();++i){ //看i,j是不一样的下标值
if(nums[j]!=nums[i]){
nums[++j] = nums[i];
}
}
return j+1;
}
};
力扣83题: 删除排序链表中的重复元素
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode *t,*p,*q,*k=head;
if(head==NULL)
return NULL;
t = head,q = head->next;
while(q!=NULL){
if(t->val==q->val){
t->next = q->next;
p = q;
q=q->next;
delete(p);
}
else{
t=q;
q=q->next;
}
}
return k;
}
};