思路
- 利用雙指針
- 前後指針相同,前指針向後移動
- 如果不同,前和後指針都向後移動,同時將後指針的值賦值到前指針的下標中。
/**
* 移除排序數組中重複的值,返回移除後的大小
* Author : BlueSky 2019.11.05
* exe:
* 給定 nums = [0,0,1,1,1,2,2,3,3,4],
* 函數應該返回新的長度 5, 並且原數組 nums 的前五個元素被修改爲 0, 1, 2, 3, 4。
*/
public class RemoveDuplicateSortArr {
public int remove(int[] arr){
if (arr.length == 0){
return 0;
}
int pre = 0, cur = 0, n = arr.length;
while (cur < n) {
if (arr[pre] != arr[cur]){
// 後指針向後移動
++pre;
// 並且賦值
arr[pre] = arr[cur];
}
cur++;
}
return pre + 1;
}
}