01 看題和準備
今天介紹的是LeetCode算法題中Easy級別的第8題(順位題號是26)来颤。給定一個已經排序(由小到大)的整數(shù)數(shù)組(元素可以重復)秋茫,計算其中不重復元素的個數(shù)n,并將數(shù)組的前n個元素依次賦值為篩選后的不重復元素。不許使用新數(shù)組接收數(shù)據(jù)。例如:
nums = {1,1,2}
輸出不重復元素的個數(shù)為2
數(shù)組前2個元素為1和2,即nums = {1,2,2}
本次解題使用的開發(fā)工具是eclipse茴晋,jdk使用的版本是1.8,環(huán)境是win7 64位系統(tǒng)回窘,使用Java語言編寫和測試诺擅。
02 分析并解題
特殊情況:如果數(shù)組中元素個數(shù)小于等于1,其不重復元素的個數(shù)即為數(shù)組的長度啡直,也不用重新給前面的元素重新賦值烁涌。
獲取第一個元素苍碟,與第二個元素比較,如果兩數(shù)不等撮执,count加1微峰,數(shù)組的新第2個元素為原數(shù)組第2個元素,依次往后循環(huán)抒钱。
最后count需要加1蜓肆,因為在第一次循環(huán)兩數(shù)不等的時候,count是從第二個元素開始累加的谋币,還需要算上最開始的第一位元素仗扬。
public int removeDuplicates(int[] nums) {
if (nums.length <= 1) {
return nums.length;
}
int count = 0;
for(int i=0; i<nums.length-1; i++){
if (nums[i] != nums[i+1]) {
count++;
nums[count] = nums[i+1];
}
}
return count+1;
}
03 小結
此題比較簡單,如果大家有什么好的解法思路蕾额、建議或者其他問題早芭,可以下方留言交流,點贊诅蝶、留言退个、轉發(fā)就是對我最大的回報和支持!