題目
給你一個(gè) 非嚴(yán)格遞增排列 的數(shù)組 nums
,請(qǐng)你 原地 刪除重復(fù)出現(xiàn)的元素,使每個(gè)元素 只出現(xiàn)一次 ,返回刪除后數(shù)組的新長(zhǎng)度。元素的 相對(duì)順序 應(yīng)該保持 一致 。然后返回 nums
中唯一元素的個(gè)數(shù)。
考慮 nums
的唯一元素的數(shù)量為 k
,你需要做以下事情確保你的題解可以被通過:
- 更改數(shù)組
nums
,使nums
的前k
個(gè)元素包含唯一元素,并按照它們最初在nums
中出現(xiàn)的順序排列。nums
的其余元素與nums
的大小不重要。 - 返回
k
。
判題標(biāo)準(zhǔn):
系統(tǒng)會(huì)用下面的代碼來測(cè)試你的題解:
int[] nums = [...]; // 輸入數(shù)組
int[] expectedNums = [...]; // 長(zhǎng)度正確的期望答案
int k = removeDuplicates(nums); // 調(diào)用
assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
如果所有斷言都通過,那么您的題解將被 通過。
示例 1:
輸入:nums = [1,1,2]
輸出:2, nums = [1,2,_]
解釋:函數(shù)應(yīng)該返回新的長(zhǎng)度 2 ,并且原數(shù)組 nums 的前兩個(gè)元素被修改為 1, 2 。不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
示例 2:文章來源:http://www.zghlxwxcb.cn/news/detail-747300.html
輸入:nums = [0,0,1,1,1,2,2,3,3,4]
輸出:5, nums = [0,1,2,3,4]
解釋:函數(shù)應(yīng)該返回新的長(zhǎng)度 5 , 并且原數(shù)組 nums 的前五個(gè)元素被修改為 0, 1, 2, 3, 4 。不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
提示:文章來源地址http://www.zghlxwxcb.cn/news/detail-747300.html
1 <= nums.length <= 3 * 104
-104 <= nums[i] <= 104
-
nums
已按 非嚴(yán)格遞增 排列
解
①蕪湖,一次通過
思想:首先數(shù)組的第一位置固定不變,下標(biāo)從1開始
temp變量用于存儲(chǔ)當(dāng)前判斷到的元素的下標(biāo)
每一層for循環(huán)決定nums[i]應(yīng)該存儲(chǔ)的數(shù)據(jù)
內(nèi)層for循環(huán)用來判斷當(dāng)前元素是否等于上一個(gè)元素,如果不等于則表示該元素第一次出現(xiàn),存儲(chǔ)到nums[i]當(dāng)中,如果等于表示該元素已經(jīng)出現(xiàn)過,number--,繼續(xù)判斷直到出現(xiàn)沒有等于的情況,將這個(gè)情況存儲(chǔ)到nums[i]
class Solution {
public int removeDuplicates(int[] nums) {
int number=nums.length-1;
int temp=1;//存儲(chǔ)當(dāng)前判斷到哪里
for(int i=1;i<=number;i++){
for(int j=temp;j<nums.length;j++){
if(nums[j]==nums[j-1]){
//如果當(dāng)前元素和上一個(gè)元素相等
number--;
}
else{
nums[i]=nums[j];
temp=j+1;
break;
}
}
}
return number+1;
}
}
到了這里,關(guān)于LeetCode-Java:26.刪除有序數(shù)組的重復(fù)項(xiàng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!