問題:
給一組排序過的陣列nums,將不重複的值排在前面,最後再傳送這個陣列有多少個不重複的值.
case:
{3,3,3,2,2,1,1,1,1,1} = >{3,2,1} return 3
{1,2,3,3,3,5} => {1,2,3,5} return 4
{1,1,2,3,9} => {1,2,3,9} return 4
條件
- 必須在同一個陣列下操作(In-place algorithm)
- 題目沒說,升冪 降冪都可用
- 解1. 升冪 降冪都可用
- 設定如果陣列都沒有值就回傳0
- 設定一個index值j,這個值用儲存要放置的位址,預設為1.
- 依序尋訪nums[i],每當找到一個與前值不同的則將nums[j]替換成新值,然後j+1
- 最後回傳j值(會剛好為不重複值的個數)
1 | public int removeDuplicates(int[] nums) { |
目前問題:在不考慮排序問題下,在執行之前nums內容的值,會與nums之後的內容不同.