[Leetcode]@python 80. Remove Duplicates from Sorted Array II
2241 ワード
タイトルリンク
https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
タイトル
Follow up for "Remove Duplicates": What if duplicates are allowed at most twice?
For example, Given sorted array nums =
Your function should return length =
テーマの大意
順序付けされた配列を指定します.この配列を変更すると、各数が最大2回まで表示されます.余分な重複配列を除いた長さを返します.もちろん、余分な重複数を配列の後ろに置くのは影響しません.
問題を解く構想.
(参考)2つのポインタprevとcurrを用いて、A[curr]がA[prev]、A[prev-1]と等しいかどうかを判断し、等しいcurrポインタが等しくないまで後方に遍歴し続けると、currポインタが指す値をA[prev+1]に割り当て、余分な数が後方に交換される.最後のprev+1値は配列の長さです
コード#コード#
https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
タイトル
Follow up for "Remove Duplicates": What if duplicates are allowed at most twice?
For example, Given sorted array nums =
[1,1,1,2,2,3]
, Your function should return length =
5
, with the first five elements of nums being 1
, 1
, 2
, 2
and 3
. It doesn't matter what you leave beyond the new length. テーマの大意
順序付けされた配列を指定します.この配列を変更すると、各数が最大2回まで表示されます.余分な重複配列を除いた長さを返します.もちろん、余分な重複数を配列の後ろに置くのは影響しません.
問題を解く構想.
(参考)2つのポインタprevとcurrを用いて、A[curr]がA[prev]、A[prev-1]と等しいかどうかを判断し、等しいcurrポインタが等しくないまで後方に遍歴し続けると、currポインタが指す値をA[prev+1]に割り当て、余分な数が後方に交換される.最後のprev+1値は配列の長さです
コード#コード#
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) <= 2:
return len(nums)
prev = 1
curr = 2
while curr < len(nums):
if nums[curr] == nums[prev] and nums[curr] == nums[prev - 1]:
curr += 1
else:
prev += 1
nums[prev] = nums[curr]
curr += 1
return prev + 1