什麼是雙指針算法呢
雙指針算法概念
因為這題給了限定 有序,O(1) 不能改變數組換成新的 是以用快慢指針就行
package suanfa.快慢指針;
import java.util.Arrays;
import java.util.List;
/**
* 因為這題給了限定 有序,O(1) 不能改變數組換成新的 是以用快慢指針就行
*/
public class ZhiZhen {
public static void main(String[] args) {
System.out.println(DoubleZhen(new int[]{1,2,2,3,3,5,6,6}));
}
public static int DoubleZhen(int[] nums){
if (nums.length==0){
return 0;
}
//這裡定義j為快指針 讓他在下标為1的位置 i在下标wei0的位置 這樣同時開始
int i=0;
for (int j=1;j<nums.length;j++){
if (nums[j]!=nums[i]){
i++;
nums[i]= nums[j];
}
}
return i+1;//應為 i是下标 從0開始的 元素的個數要加1;
}
}
這道題還是比較簡單的 練習别的雙指針 面試常考