刪除排序數組中的重複項>>>
對於數組、鏈表、字符串
:一般可以採用雙指針,定義兩個指針,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));
}
}