本系列文章幫助想要一起go的同學,歡迎一起創(ban)作(yun)
題目詳情
給你一個有序陣列 nums ,請你 原地 刪除重複出現的元素,使每個元素 只出現一次 ,返回刪除後陣列的新長度。
不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 O(1) 額外空間的條件下完成。
示例1
輸入:nums = [1,1,2] 輸出:2, nums = [1,2] 解釋:函式應該返回新的長度 2 ,並且原陣列 nums 的前兩個元素被修改為 1, 2 。不需要考慮陣列中超出新長度後面的元素。
示例2
輸入:nums = [0,0,1,1,1,2,2,3,3,4] 輸出:5, nums = [0,1,2,3,4] 解釋:函式應該返回新的長度 5 , 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮陣列中超出新長度後面的元素。
我的解答
func removeDuplicates(nums []int) int { if len(nums) == 0{ // 首先判斷是否是空陣列 return 0 } i := 0 for j:=1;j<len(nums);j++{ // 使用雙指標;一個快指標進行++操作,一個慢指標讓排好序的元素依次連線,最後慢指標加1即為元素個數 if nums[j] != nums[j-1]{ //注意此處j與 j-1 比較;與 j+1 比較會導致溢位報錯 i++ nums[i] = nums[j] } } return i+1 }
學到了
go基礎資料型別與控制語句
本作品採用《CC 協議》,轉載必須註明作者和本文連結