LeetCode--Remove Duplicates from Sorted List、Remove Duplicates from Sorted List II解題分析
850 ワード
問題の説明:並べ替えられた配列の同じ要素を除去し、各要素が1回しか現れず、新しい配列の長さを返します.各要素が最大2回まで現れることを許可したら、新しい配列の長さを返しますか?
解題分析:配列が順序付けされていることを明確に説明するため、各要素に一度だけ出現させる場合、2つの変数を宣言すると、下付き文字はi=0、j=1から始まり、jが指す要素がiが指す要素と同じであれば、j+、そうでなければ++iが位置する要素はj位置の要素に等しく、jが完全な配列を遍歴するまで、配列処理は完了する.新しい配列の長さはi+1です
各要素が最大2回まで発生することを許可する場合、上記の処理方法とはあまり差がありません.
解題分析:配列が順序付けされていることを明確に説明するため、各要素に一度だけ出現させる場合、2つの変数を宣言すると、下付き文字はi=0、j=1から始まり、jが指す要素がiが指す要素と同じであれば、j+、そうでなければ++iが位置する要素はj位置の要素に等しく、jが完全な配列を遍歴するまで、配列処理は完了する.新しい配列の長さはi+1です
int removeDuplicates(int[] nums) {
if(nums.length < 1)// 1
return nums.length;
int index = 0;
for(int i=1; i<nums.length; i++){
if(nums[index] != nums[i]){
nums[++index] = nums[i];
}
}
return index+1;
}
各要素が最大2回まで発生することを許可する場合、上記の処理方法とはあまり差がありません.
int removeDuplicates(int[] nums) {
if(nums.length < 2)
return nums.length;
int index = 2;
for(int i=2; i<nums.length; i++){
if(nums[i] != nums[index-2])
nums[index++] = nums[i];
}
return index;
}