双指针Remove Element和Remove Duplicates from Sorted Array

双指针是一种思想,这里的指针不要单纯理解为*...只是一种定位的意思....

双指针可以是快慢指针,比如这两个,也可以是分别在前后的,恩,这种也还没遇到.....

这里的两道题都是快慢的指针,比如Remove Duplicates from Sorted Array,去掉重复的元素,一个用来遍历,就是走的快的,还有一个是指向当前的更新的位置,如果快指针是新元素,慢指针就更新然后往前移一个,如果快指针重了,那快指针就接着走,慢指针不动。

Remove Duplicates from Sorted Array:

[cpp]  view plain  copy
  1. class Solution {  
  2. public:  
  3.     int removeDuplicates(vector<int>& nums) {  
  4.         int n=nums.size();  
  5.         if(n<=1)  
  6.         {  
  7.             return n;  
  8.         }  
  9.         int id=1;  
  10.         for(int i=1;i<n;i++)  
  11.         {  
  12.             if(nums[i]!=nums[i-1])  
  13.             {  
  14.                 nums[id]=nums[i];  
  15.                 id++;  
  16.             }  
  17.              
  18.         }  
  19.         return id;  
  20.     }  
  21. };  


remove element:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. class Solution {  
  2. public:  
  3.     int removeElement(vector<int>& nums, int val) {  
  4.         int id=0;  
  5.         int n=nums.size();  
  6.         
  7.         for(int i=0;i<n;i++)  
  8.         {  
  9.             if(nums[i]!=val)  
  10.             {  
  11.                 nums[id++]=nums[i];  
  12.             }  
  13.         }  
  14.         return id;  
  15.           
  16.     }  
  17. };  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值