LeetCode Problems/Easy

๐Ÿ˜ LeetCode Easy Collections II - 14 Problems

metamong 2024. 9. 2.

0283. Move Zeroes / 0344. Reverse String

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        length=len(nums)
        if length != 1:
            first_encountered = False
            for x in range(length-1):
                if nums[x] == 0:
                    if not first_encountered:
                        first_encountered = True
                        y = x + 1
                    while y<length:
                        if nums[y] != 0:
                            nums[x],nums[y] = nums[y],nums[x]
                            break
                        y+=1
class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        x,y=0,len(s)-1
        while x<y:
            s[x],s[y]=s[y],s[x]
            x+=1
            y-=1
        return s

 

๐Ÿ˜ 0283) ํ•œ ์ชฝ์—์„œ ๋™์‹œ์— ์‹œ์ž‘ํ•˜๋Š” ํˆฌ ํฌ์ธํ„ฐ ์œ ํ˜•์œผ๋กœ, ํˆฌ ํฌ์ธํ„ฐ x๋Š” 0์„, y๋Š” 0์ด ์•„๋‹Œ ์ชฝ์„ ๊ฐ€๋ฆฌํ‚ค๋ฉด์„œ ์‹œ์ž‘. x๋Š” 0์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ๋งŒ(for๋ฌธ ๋Œ๋ฉด์„œ), y๋Š” (x+1)๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด 0์ด ์•„๋‹Œ ๊ณณ์„ ์ฐพ๋Š”๋‹ค๋ฉด ๋ฐ”๋กœ swap. ํˆฌ ํฌ์ธํ„ฐ ์œ ํ˜•์€ x์™€ y ๋ชจ๋‘ ๊ฐ๊ฐ ์ „์ฒด ๋ฒ”์œ„ ๋”ฑ ํ•œ ๋ฒˆ์”ฉ๋งŒ traverseํ•˜๋ฏ€๋กœ, ํ•œ ๋ฒˆ x๊ฐ€ 0์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ y๋ฅผ ์ฒ˜์Œ์— ๋”ฑ x + 1์ด๋ผ ์„ค์ •ํ•˜๊ณ . ๊ทธ ์ดํ›„๋Š” y๋ฅผ ์ „์ฒด ๋ฒ”์œ„๊นŒ์ง€ ์ญ‰ ํ•œ๋ฒˆ๋งŒ ๋Œ๋ฆฌ๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค(first_encountered flag ๋ณ€์ˆ˜ ํ™œ์šฉ)

๐Ÿ˜ 0344) ๋‘ ํฌ์ธํ„ฐ(x,y)๋ฅผ ์–‘์ชฝ ๋์— ์žก๊ณ  ๊ฐ€์šด๋ฐ๋กœ ํ–ฅํ•˜๋ฉด์„œ s[x], s[y] = s[y], s[x] swap ์ง„ํ–‰. x์™€ y ํ•ฉ์ณ์„œ ํ•œ๋ฐ”ํ€ด๋งŒ ์ง„ํ–‰ํ•˜๋ฏ€๋กœ O(N)


0917. Reverse Only Letters / 0674. Longest Continuous Increasing Subsequence

class Solution:
    def reverseOnlyLetters(self, s: str) -> str:
        s=list(s)
        x,y=0,len(s)-1
        while x<y:
            if s[x].isalpha():
                if s[y].isalpha():
                    s[x],s[y]=s[y],s[x]
                    x+=1
                    y-=1
                else:
                    y-=1
            else:
                x+=1
        return ''.join(s)
class Solution:
    def findLengthOfLCIS(self, nums: List[int]) -> int:
        dp=[1]*len(nums)
        for x in range(1,len(nums)):
            if nums[x-1] < nums[x]:
                dp[x] = dp[x-1] + 1
        return max(dp)

 

๐Ÿ˜ 0917) ์œ„ 344์™€ ๋™์ผ ์œ ํ˜•. ๋‹จ, ์•ŒํŒŒ๋ฒณ์ผ ๊ฒฝ์šฐ๋งŒ swap ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์–ธ์ œ ํฌ์ธํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ค„ ์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ˜ 0674) dp ํ™œ์šฉ. LIS์˜ '์—ฐ์†ํ•œ' subarray ๋ฒ„์ „. (i-1) ์ธ๋ฑ์Šค ์›์†Œ์™€ (i) ์ธ๋ฑ์Šค ์›์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด, i-1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ณด๋‹ค i๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๊ฐ€ strictly increasing(<)ํ•˜๋‹ค๋ฉด i-1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” dp ํ…Œ์ด๋ธ”์˜ ๊ฐ’๋ณด๋‹ค 1์„ ์ถ”๊ฐ€(i์ธ๋ฑ์Šค ์›์†Œ 1๊ฐœ๊ฐ€ ๋ถ™์œผ๋ฏ€๋กœ)


0226. Invert Binary Tree / 0110. Balanced Binary Tree

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        stack=[root]
        while stack:
            node = stack.pop()
            if not node:
                continue
            node.left, node.right = node.right, node.left
            stack += [node.left, node.right]
        return root
        
#----------------------------------------------------------------------------------
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:
            return None

        left,right = root.left, root.right
        root.left = self.invertTree(right)
        root.right = self.invertTree(left)
        return root
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isBalanced(self, root: Optional[TreeNode]) -> bool:
        def get_depth_of_a_tree(root):
            if not root: return 0
            left, right = root.left, root.right
            return max(get_depth_of_a_tree(left), get_depth_of_a_tree(right)) + 1

        def dfs(tree):
            if not tree:
                l_h, r_h = 0,0
                return
            l_h, r_h = get_depth_of_a_tree(tree.left), get_depth_of_a_tree(tree.right)
            if abs(l_h-r_h) > 1:
                return -1
            left, right = tree.left, tree.right
            dl, dr = dfs(left), dfs(right)
            if dl == -1 or dr == -1:
                return - 1
        return dfs(root) != -1

 

๐Ÿ˜ 0226) root๋ผ๋Š” tree ์ „์ฒด ํด๋ž˜์Šค๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์žฌ๊ท€์ ์œผ๋กœ ์™ผ์ชฝ subtree์™€ ์˜ค๋ฅธ์ชฝ subtree๋ฅผ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. ํŒŒ์ด์ฌ์€ swap ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋งค์šฐ ์‰ฝ๊ฒŒ node์˜ left์™€ node์˜ right๋ฅผ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. ๋งŒ์•ฝ tree์˜ depth๊ฐ€ ๋งค์šฐ ๊นŠ์–ด์งˆ ๊ฒฝ์šฐ ์žฌ๊ท€ ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ(์•„๋ž˜ ์†”๋ฃจ์…˜ (2)). ์ด๋Ÿด ๊ฒฝ์šฐ stack์„ ํ™œ์šฉํ•ด ๋จผ์ € tree ์ „์ฒด ํด๋ž˜์Šค๋ฅผ ๋„ฃ๊ณ , ๋„ฃ์€ ํด๋ž˜์Šค์˜ ์™ผ์ชฝ subtree์™€ ์˜ค๋ฅธ์ชฝ subtree๋ฅผ swapํ•œ ๋‹ค์Œ ์ฐจ๋ก€๋Œ€๋กœ stack์— ๋„ฃ๋Š”๋‹ค. ๊ทธ ๋‹ค์Œ left์™€ right subtree ๊ฐ๊ฐ ๋‹ค์‹œ ๋นผ์„œ ์กด์žฌํ•˜๋Š” node๋ผ๋ฉด ๋‹ค์‹œ ํ•ด๋‹น node์˜ left์™€ right swapํ•˜๊ณ  stack์— ๋‹ค์‹œ ๋„ฃ๋Š”๋‹ค. ์žฌ๊ท€๋ฅผ stack์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š”, ์ตœ๊ทผ iteration ์ง„ํ–‰ํ•œ ๋ถ€๋ถ„์—์„œ ๋‹ค์‹œ iteration ๊นŠ๊ฒŒ ์ง„ํ–‰ํ•˜๋ฏ€๋กœ stack ์ž๋ฃŒ๊ตฌ์กฐ ํŠน์„ฑ ์ƒ ์ตœ๊ทผ์— ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ ๋‹ค๋Š” ์„ฑ์งˆ์ด ๋™์ผ.

๐Ÿ˜ 0110) Binary Tree๊ฐ€ Balanced ๋˜์—ˆ๋‹ค๋Š” ๊ฑด tree๋‚ด์˜ ๋ชจ๋“  sub-tree๊ฐ€ root ์ œ์™ธ left์™€ right์˜ depth ์ฐจ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ์ง€ ์•Š๋‹ค๋Š” ๋œป์ด๋‹ค. ์ฆ‰ ์žฌ๊ท€์ ์œผ๋กœ, ์ „์ฒด root๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด left์™€ right sub-tree์˜ depth ์ฐจ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ์ง€ ์•Š์€ ์ง€ ๊ณ„์† ํ™•์ธ. ์ฐจ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋ฐ”๋กœ -1 return. dfs(left)์™€ dfs(right)์˜ ๊ฒฐ๊ณผ ์ค‘ ์ตœ์†Œ 1๊ฐœ๊ฐ€ -1์ด๋ฉด ์ „์ฒด unbalanced์ด๋ฏ€๋กœ -1 return.


0104. Maximum Depth of Binary Tree / 0100. Same Tree

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if root is None:
            return 0
        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
        if not p and not q:
            return True
        if not p or not q or p.val != q.val:
            return False
        if p.val == q.val:
            return (self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right))

 

๐Ÿ˜ 0104) ์ฃผ์–ด์ง„ Binary Tree์˜ ์ตœ๋Œ€ ๊นŠ์ด๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์–ด์ง„ root tree์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ subtree ๊ฐ๊ฐ์˜ ์ตœ๋Œ“๊ฐ’ depth ์ค‘ max() ๊ฒฐ๊ณผ์— 1์„ ๋”ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ „์ฒด root tree์˜ ๊นŠ์ด(root ํฌํ•จํ•˜๋ฏ€๋กœ 1 ๋”ํ•ด์•ผ ํ•œ๋‹ค)

 

๐Ÿ˜ 0100) ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ left child์™€ right child ๊ฐ๊ฐ p์™€ q๋กœ not p and not q์ผ ๋•Œ๊นŒ์ง€ ์žฌ๊ท€ ๋Œ๋ฆฌ๋ฉด ๋œ๋‹ค. ํ˜„์žฌ node์˜ val์ด ์„œ๋กœ ๊ฐ™๋‹ค๋ฉด ๊ทธ ๋‹ค์Œ child (p.left / q.left) (p.right / q.right) ํ™•์ธ


0876. Middle of the Linked List / 0125. Valid Palindrome

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
        slow, fast = head, head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
        return slow
class Solution:
    def isPalindrome(self, s: str) -> bool:
        l = []
        for x in s:
            if x.isdigit():
                l.append(x)
            elif x.isalpha():
                l.append(x.lower())
        if l == l[::-1]:
            return True
        else:
            return False
            
#
class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        slow, fast = head, head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
            if slow == fast:
                return True
        return False

 

๐Ÿ˜ 0876) Linked List ๋ฌธ์ œํ’€์ด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ• fast pointer / slow pointer๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๋‹ค. fast pointer๊ฐ€ ์ฃผ์–ด์ง„ linked list์˜ ๋งจ ์˜ค๋ฅธ์ชฝ ๋ ๋…ธ๋“œ์— ๋„๋‹ฌ(ํ™€์ˆ˜ ๊ฐœ์ˆ˜ ๋…ธ๋“œ)ํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฅธ์ชฝ ๋์˜ ๊ทธ ๋‹ค์Œ None(์ง์ˆ˜ ๊ฐœ์ˆ˜ ๋…ธ๋“œ)์— ๋„๋‹ฌํ•  ๋•Œ slow pointer๊ฐ€ ๋„๋‹ฌํ•œ ๊ณณ์ด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” middle of the linked list.

 

๐Ÿ˜ 0125) ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ชจ๋‘ ๋ชจ์€ ๋‹ค์Œ(์•ŒํŒŒ๋ฒณ์ด๋ฉด ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๊ณ  ๋ชจ์œผ๊ธฐ) ๋ฐ”๋กœ ํŒฐ๋ฆฐ๋“œ๋กฌ ํŒ์ •. ํŒ์ • ์‹œ [::-1]๊ณผ ๋น„๊ตํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ์–‘ ์˜†์— ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ๋†“๊ณ  traverseํ•˜๋ฉด์„œ ๋น„๊ตํ•ด๋„ ๋œ๋‹ค


0206. Reverse Linked List / 0141. Linked List Cycle

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        prev, node = None, head
        while node is not None:
            tmp = node.next
            node.next = prev
            prev = node
            node = tmp
        return prev
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        slow, fast = head, head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
            if slow == fast:
                return True
        return False

 

๐Ÿ˜ 0206) reverse ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ˜„์žฌ ๋…ธ๋“œ์™€ ๋ฐ”๋กœ ์•ž์˜ ๋…ธ๋“œ ๊ฐ๊ฐ node / prev๋ผ๊ณ  ํ•œ ๋‹ค์Œ, node.next = prev๋กœ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค. ์ด ๋•Œ, node.next๊ฐ€ prev๋กœ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ˆœ๊ฐ„, node ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์—ฐ๊ฒฐ๋œ node์™€์˜ ์ค„์ด ๋Š์–ด์ง€๋ฏ€๋กœ, ์ž„์‹œ tmp ๋…ธ๋“œ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๊ฒŒ ํ•ต์‹ฌ

๐Ÿ˜ 0141) ์ฃผ์–ด์ง„ linked list๊ฐ€ cycle์ด ์žˆ๋Š” ์ง€ ํŒ๋ณ„ํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ. ๋งจ ๋งˆ์ง€๋ง‰ node๊ฐ€ ๊ทธ ์•ž์˜ ์—ฌ๋Ÿฌ node ์ค‘ ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋ฉด cycle ์กด์žฌ. fast / slow๋กœ ๋‚˜๋ˆ„์–ด์„œ fast๊ฐ€ ์–ธ์  ๊ฐ€ slow๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.


0234. Palindrome Linked List / 0643. Maximum Average Subarray I

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def isPalindrome(self, head: Optional[ListNode]) -> bool:
        rev = None
        slow, fast = head, head
        while fast and fast.next:
            fast = fast.next.next
            rev, rev.next, slow = slow, rev, slow.next

        if fast:
            slow = slow.next
        
        while rev and rev.val == slow.val:
            slow = slow.next
            rev = rev.next
        
        return not rev
class Solution:
    def findMaxAverage(self, nums: List[int], k: int) -> float:
        avg = sum(nums[:k]) / k
        avg_sum = sum(nums[:k])
        start=0
        for i in range(k,len(nums)):
            avg_sum-=(nums[start])
            avg_sum+=(nums[i])
            avg = max(avg,avg_sum/k)
            start+=1
        return avg

 

๐Ÿ˜ 0234) ๋ฌธ์ œ์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ๋‘ ๋Ÿฐ๋„ˆ(fast, slow)๋ฅผ ๋™์‹œ์— head๋ถ€ํ„ฐ ์ง„ํ–‰ํ•˜๋ฉฐ, fast๊ฐ€ ๋๊นŒ์ง€ ๋‹ค๋‹ค๋ฅผ ๋•Œ๊นŒ์ง€ slow๋Š” ์ ˆ๋ฐ˜์„ ์ง„ํ–‰ํ•˜๊ณ , ์ ˆ๋ฐ˜๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ์˜ ๋ชจ๋“  node๋ฅผ rev๋กœ ์ €์žฅ / ๊ทธ ๋‹ค์Œ ์ค‘๊ฐ„ ์ง€์ ๋ถ€ํ„ฐ slow์™€ rev๊ฐ€ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋ป—์–ด๋‚˜๊ฐ€๋ฉฐ ์ฐจ๋ก€๋Œ€๋กœ slow์™€ rev์˜ val์„ ๋น„๊ต. ์ตœ์ข…์ ์œผ๋กœ rev๊ฐ€ ์ผ๋ถ€ ์žˆ๋‹ค๋Š” ๊ฑด ํŒฐ๋ฆฐ๋“œ๋กฌ์ด ์•„๋‹ˆ๋ฏ€๋กœ False, rev๊ฐ€ ๋น„์—ˆ๋‹ค๋Š” ๊ฑด True์ด๋ฏ€๋กœ not rev๋ฅผ ๋ฆฌํ„ด

โ€ป ๋‹จ, ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ผ ๋•Œ, rev๋Š” ์ •ํ™•ํ•˜๊ฒŒ ์ค‘๊ฐ„ ๋…ธ๋“œ ๋ฐ”๋กœ ์•ž ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ๊ฐ€์ง€์ง€๋งŒ, slow๋Š” ์ •ํ™•ํ•˜๊ฒŒ ์ค‘๊ฐ„ ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋”ฐ๋ผ์„œ, slow๋Š” ์ค‘๊ฐ„ ๋…ธ๋“œ ๋ฐ”๋กœ ๋’ท ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ๋” slow = slow.next๋กœ ์—…๋ฐ์ดํŠธ

ex) ์•„๋ž˜ ์˜ˆ์‹œ) node ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ผ๋•Œ ์ •ํ™•ํ•˜๊ฒŒ rev / slow ์Šคํƒ€ํŒ… ์ง€์  ์ค‘๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋‰˜์ง€๋งŒ, ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ผ ๋•Œ๋Š” slow๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™ํ•ด์„œ slow = slow.next๋กœ ์—…๋ฐ์ดํŠธ

๐Ÿ˜ 0643) ์ „ํ˜•์ ์ธ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฌธ์ œ. ์—ฐ์†ํ•œ, ์ •ํ•ด์ง„ k๊ฐœ์˜ ๊ฐœ์ˆ˜์˜ ํ‰๊ท  ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ. ์‹œ๊ฐ„ ๋ณต์žก๋„ O(N)๋งŒ์— ํฌ๊ธฐ ๊ณ ์ •ํ•œ ์ฑ„๋กœ ๋งจ ์•ž๊ณผ ๋งจ ๋’ค๋งŒ ์ผ€์–ดํ•ด์„œ ๋ฆฌ์ŠคํŠธ ์˜ค๋ฅธ์ชฝ ๋๊นŒ์ง€ ์Šฌ๋ผ์ด๋“œ ํ•ด์ฃผ๋ฉด ๋


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'LeetCode Problems > Easy' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๐Ÿ˜Š LeetCode Easy Collections I - 20 Problems  (1) 2024.08.05

๋Œ“๊ธ€