双指针法
Posted wangcl97
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双指针法相关的知识,希望对你有一定的参考价值。
针对一些要求in-place的问题,使用双指针法可有效的解决。
1.数组
- 在空间复杂度为O(1)的情况下,移除数组中的元素
int removeElement(int* nums, int numsSize, int val){
int i=0;
if(numsSize==0)
return 0;
for(int j=0;j<numsSize;j++){
if(nums[j]!=val){
nums[i++]=nums[j];
}
}
return i;
}
- 在空间复杂度为O(1)的情况下,去重已排序的数组
int removeDuplicates(int* nums, int numsSize){
int i=0;
if(numsSize==0)
return 0;
for(int j=1;j<numsSize;j++){
if(nums[j]!=nums[i]){
nums[++i]=nums[j];
}
}
return i+1;
}
以上是关于双指针法的主要内容,如果未能解决你的问题,请参考以下文章