LeetCode-並べ替え配列から重複を削除
967 ワード
タイトル:
ソート配列を指定すると、繰り返し表示される要素をその場で削除し、各要素が1回だけ表示されるようにして、削除後の配列の新しい長さを返します.「余分な配列空間を使用しないでください.入力配列をその場で修正し、O(1)余分な空間を使用する条件で完了する必要があります」.
実現する
ソート配列を指定すると、繰り返し表示される要素をその場で削除し、各要素が1回だけ表示されるようにして、削除後の配列の新しい長さを返します.「余分な配列空間を使用しないでください.入力配列をその場で修正し、O(1)余分な空間を使用する条件で完了する必要があります」.
実現する
private static int removeDuplicates(int[] nums) {
if(nums == null || nums.length == 0){
return 0;
}
int num = 1;
int sameIndex = -1;
int maxNum = nums[0];
for(int i = 0; i < nums.length - 1; i++){
if(maxNum >= nums[i + 1] && sameIndex < 0){
sameIndex = i + 1;
} else if(maxNum < nums[i + 1] && sameIndex >= 0){
nums[sameIndex] = nums[i + 1];
maxNum = nums[sameIndex];
i = sameIndex - 1;
sameIndex = -1;
num++;
} else if(maxNum < nums[i + 1]){
maxNum = nums[i + 1];
num++;
}
}
return num;
}