這是悅樂書的第149次更新,第151篇原創
01 看題和準備
今天介紹的是LeetCode算法題中Easy級別的第8題(順位題號是26)。給定一個已經排序(由小到大)的整數數組(元素可以重復),計算其中不重復元素的個數n,并將數組的前n個元素依次賦值為篩選后的不重復元素。不許使用新數組接收數據。例如:
nums = {1,1,2}
輸出不重復元素的個數為2
數組前2個元素為1和2,即nums = {1,2,2}
本次解題使用的開發工具是eclipse,jdk使用的版本是1.8,環境是win7 64位系統,使用Java語言編寫和測試。
02 分析并解題
特殊情況:如果數組中元素個數小于等于1,其不重復元素的個數即為數組的長度,也不用重新給前面的元素重新賦值。
獲取第一個元素,與第二個元素比較,如果兩數不等,count加1,數組的新第2個元素為原數組第2個元素,依次往后循環。
最后count需要加1,因為在第一次循環兩數不等的時候,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 小結
此題比較簡單,如果大家有什么好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支持!