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
๋๊ธ