Java:Scanner.nextLine()和Scnner.next()的區別,以及多條nextLine()輸入問題的解決方法
阿新 • • 發佈:2020-11-20
技術標籤:C#
方法:雙指標法
演算法
陣列完成排序後,我們可以放置兩個指標 i 和 j,其中 i 是慢指標,而 jj 是快指標。只要 nums[i] = nums[j],我們就增加 j 以跳過重複項。
當我們遇到 nums[j]!=nums[i] 時,跳過重複項的執行已經結束,因此我們必須把它(nums[j])的值複製到 nums[i+1]。然後遞增 i,接著我們將再次重複相同的過程,直到 j 到達陣列的末尾為止。
public int removeDuplicates(int[] nums) { if (nums.Count() == 0) return 0; int i = 0; for (int j = 1; j < nums.Count(); j++) { if (nums[j] != nums[i]) { i++; nums[i] = nums[j]; } } return i + 1; }
複雜度分析
-
時間複雜度:O(n)O(n),假設陣列的長度是nn,那麼ii和jj分別最多遍歷nn步。
-
空間複雜度:O(1)O(1)。