floatFirstTOC: right
๐ฅ๏ธย ์์ํ๋ฉฐ
๋ณด์๋ง์ ํฌํฌ์ธํฐ๊ฐ ์๊ฐ๋๋ ๋ฌธ์ ๋ค.
slow ์ fast ๋ฅผ ์ง์ ํ ํ ํด๊ฒฐํ ์ ์๋ค.ย
โ๏ธย Python
from typing import List class Solution: def removeDuplicates(self, nums: List[int]) -> int: if len(nums) <= 2: return len(nums) # ๊ธธ์ด๊ฐ 2 ์ดํ์ผ ๊ฒฝ์ฐ ์ด๋ฏธ ์กฐ๊ฑด์ ๋ง์กฑ # Two pointer approach slow = 2 # ์ฒ์ ๋ ๊ฐ๋ ๊ทธ๋๋ก ๋๋ฏ๋ก slow๋ 2๋ถํฐ ์์ for fast in range(2, len(nums)): # fast ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ด slow ํฌ์ธํฐ ๋ฐ๋ก ์ ๋ ๊ฐ์ ๊ฐ๊ณผ ๋ค๋ฅผ ๋ if nums[fast] != nums[slow - 2]: nums[slow] = nums[fast] # ๊ฐ์ ์ฎ๊น slow += 1 # ์ค๋ณต์ ํ์ฉํ ์์น๋ฅผ ์ฆ๊ฐ return slow # slow ํฌ์ธํฐ๊ฐ ์ค๋ณต์ ์ ๊ฑฐํ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ฐํ # ์์ ํ ์คํธ sol = Solution() print(sol.removeDuplicates([0, 0, 1, 1, 1, 1, 2, 3, 3]))
ย
ํฌํฌ์ธํฐ๋ฅผ ํ์ฉํ์ง ์๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ๋ ๊ฐ๋ฅํ๋ค.
class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums: return 0 idx = 1 count = 1 for i in range(1, len(nums)): if nums[i] == nums[i - 1]: count += 1 else: count = 1 if count <= 2: nums[idx] = nums[i] idx += 1 return idx
![[Leetcode] 80. Remove Duplicates from Sorted Array II](https://reo91004.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fb4dac9d0-810c-47c4-800c-0ca10b8d0529%2Fde29f40a-05a3-4aec-b112-7e56072966a0%2FLeetCode_Logo_Black.png?table=block&id=d8d71dc5-97b2-47be-9165-34ed0570897c&cache=v2)
![[Leetcode] 80. Remove Duplicates from Sorted Array II](https://reo91004.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fb4dac9d0-810c-47c4-800c-0ca10b8d0529%2F45a3427e-47fb-412a-a090-3bf6d1afdb04%2Fleetcode.png?table=block&id=d8d71dc5-97b2-47be-9165-34ed0570897c&cache=v2)

๋๊ธ