删除排序数组中的重复项>>>
对于数组、链表、字符串
:一般可以采用双指针,定义两个指针,left
,right
,指针的含义分别是已经过滤号的数组的尾部,和不重复数组的头部,若发现nums[left]==nums[right]
则不断向后移动right
直到发现不重复的元素,则将nums[left+1]=nums[rightt]
遍历上述过程、
package KTwoPointers;
import AarrayProblem.Problem1;
import java.util.Arrays;
public class Problem26 {
public int removeDuplicates(int[] nums) {
if(nums.length==0) return 0;
if(nums.length==1) return 1;
int left = 0;
int right = 1;
while(right<nums.length){
if(nums[left]==nums[right]){
right++;
}else{
left++;
nums[left]=nums[right];
right++;
}
}
return left+1;
}
public static void main(String[] args) {
int[] arr = {1,1,2};
Problem26 problem26 = new Problem26();
problem26.removeDuplicates(arr);
System.out.println(Arrays.toString(arr));
}
}