1. 程式人生 > 實用技巧 >Java:Scanner.nextLine()和Scnner.next()的區別,以及多條nextLine()輸入問題的解決方法

Java:Scanner.nextLine()和Scnner.next()的區別,以及多條nextLine()輸入問題的解決方法

技術標籤: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)。