정렬된 배열에서 중복 제거
5590 단어 algorithmsleetcodecsharpeasy
문제 설명
감소하지 않는 순서로 정렬된 정수 배열
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 ⭐ 팔로우
또는 커피를 사주세요 ⬇️ 감사합니다.
Reference
이 문제에 관하여(정렬된 배열에서 중복 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fakestandard/remove-duplicates-from-sorted-array-85n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)