정렬된 배열에서 중복 제거

#26.정렬된 배열에서 중복 제거

문제 설명



감소하지 않는 순서로 정렬된 정수 배열nums이 주어지면 각 고유 요소가 한 번만 나타나도록 중복 항목을 제자리에서 제거합니다. 요소의 상대적인 순서는 동일하게 유지되어야 합니다.

일부 언어에서는 배열의 길이를 변경할 수 없으므로 결과를 배열의 첫 번째 부분에 배치해야 합니다nums. 더 공식적으로, 중복을 제거한 후 k 요소가 있는 경우 k의 첫 번째 nums 요소가 최종 결과를 보유해야 합니다. 첫 번째k 요소 외에 무엇을 남기는지는 중요하지 않습니다.

최종 결과를 k의 첫 번째k 슬롯에 배치한 후 nums를 반환합니다.

다른 어레이에 추가 공간을 할당하지 마십시오. O(1) 추가 메모리를 사용하여 입력 배열을 제자리에서 수정하여 이를 수행해야 합니다.

커스텀 심사위원:

심사위원은 다음 코드를 사용하여 솔루션을 테스트합니다.

int[] nums = [...]; // Input array
int[] expectedNums = [...]; // The expected answer with correct length

int k = removeDuplicates(nums); // Calls your implementation

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
    assert nums[i] == expectedNums[i];
}


모든 어설션이 통과되면 솔루션이 수락됩니다.

예 1

Input: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).


예 2

Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).


설명



給定 給定 個 一 一 排序 的 整數 陣列 陣列 陣列 陣列 我們 就地 就地 刪除 刪除 重複 的 的 項目 項目 項目 項目 項目 項目 項目 個 元素 只 只 出現 次 次 次 次 次 次 次 次 而 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 數量 不 不 不 不 不 不 不 不 不 不 不 不 不.剩餘元素數量,如果有誤還請告知)

限制 限制 能 能 只 額外 o (1) 的 記憶體 空間 空間 空間 空間 空間 空間 另外 另外 另外 因為 某些 某些 語言 語言 宣告 陣列 後 無法 改變 其 長度 長度 長度 長度 長度 長度 所以 部分 部分 部分 部分 部分 部分 部分 部分 陣列 後 後 半段 非 結果 的 的 部分 部分 部分 段 段 段不會檢查,可任意留下任何值,題目也附上如何檢查陣列的程式碼,它僅僅只檢查到我們要返回的結果值以前的元素

해결책



題目 題目 簡單 蠻 蠻 蠻 蠻 只 只 重複 重複 元素 作法 不 不 只 一 一 種 種 種 種 種 種 種 限制 只 能 使用 o (1) 的 額外 空間 空間 空間 空間 空間 空間 空間 空間 空間 空間 空間 額外 建立 一 陣列 元素 元素 元素 元素 元素 那麼 能 能 能 直接 直接 遍歷 遍歷 題目 給 的 的 其 其 其 其 其 其 其 其 其 其 其 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 元素 額外 額外 空間 空間 空間 空間 空間 空間 空間 空間 使用 使用 使用 o (1)陣列內的值,建立一個 int 變數來計數不重複元素的個數

迴圈 迴圈 1 從 從, 將 nums[res]nums[i] 比較 是否 相同 相同 相同 相同 相同 相同 相同 比較 比較 的 元素 元素 即 索引 索引 0 和 索引 索引 1 元素 元素 元素 迴圈 不 從 開始 開始 開始 比較 後 兩 兩 值 不 相同 相同 就 讓 讓 讓 讓 讓 讓 讓 讓 讓 不 不 0 ,將 nums[i] 指給 nums[res] ,如果相同則繼續迴圈,最後返回 res+1,因為 res 是從 0 開始,最後必須加上 1 讓弃整敠的

public int RemoveDuplicates(int[] nums)
{
    if (nums.Length == 0) return 0;

    int res = 0;

    for (int i = 1; i < nums.Length; i++)
    {
        if (nums[res] != nums[i])
        {
            res++;
            nums[res] = nums[i];
        }
    }

    return ++res;
}


참조



LeetCode Solution

GitHub Repository


글 읽어주셔서 감사합니다 🌷 🌻 🌼

마음에 드셨다면 주저말고 하트 꾸욱 눌러주세요❤️
또는 내 Leetcode 솔루션에서 좋아요를 클릭하세요.
또는 내 GitHub ⭐ 팔로우
또는 커피를 사주세요 ⬇️ 감사합니다.

좋은 웹페이지 즐겨찾기