給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在原地 修改輸入陣列並在使用 o(1) 額外空間的條件下完成。
示例 1:
給定陣列 nums =[1,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
你不需要考慮陣列中超出新長度後面的元素。
思路分析
因為是排序陣列,只需要進行相鄰之間的比較。
定義left為0,right為1,遍歷陣列,如果left和right相等則right+1,如果不相等,讓left+1,並與right互換,而後讓right+1
**實現
func removeduplicates(nums [10]int)int
left,right:=0,1 //定義left和right
for right<=len(nums)-1else
} fmt.println(nums[:left+1]) //輸出陣列內元素
return left+1 //輸出個數
}func main()
count:=removeduplicates(array)
fmt.println("count is",count)
}
得到輸出
[0 1 2 4 5 7 10]
count is 7
以此例詳細解釋
該陣列為[0,0,0,1,1,2,4,5,7,10]
left為0,right為1,指向的值都是0,
開始遍歷,left=right,right++
直到right的下標為3,指向值為1時,left和right值不等
left+1,與right互換,隨後right也+1
陣列變成 [0,1,0,0,1,2,4,5,7,10],此時,left下標為1,right下標為4
繼續遍歷,left與right相等,都為1,right++
此時,right指向了2,不相等,left+1與right互換,right再+1
陣列變成了[0,1,2,0,1,0,5,7,10] 此時,left下標為2,值為2,right下標為6,值為5.
以此類推,隨後的5、7、10這幾個值都是單獨的,都會依次交換到left+1
最後輸出就輸出到left+1個數。
刪除排序陣列中的重複項
題目描述 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 給定陣列 nums 1,1,2 函式應該返回新的長度2,並且原陣列 nums 的前兩個元素被修改為...
刪除排序陣列中的重複項
給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...
刪除排序陣列中的重複項
給定陣列 nums 1,1,2,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1,2。你不需要考慮陣列中超出新長度後面的元素。給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 nums 的前五個元素被修改為 0,1,2,3,4。...