[Mock] Amazon 17

shsh·2021년 7월 23일
0

Mock

목록 보기
90/93

5028. Armstrong number

https://leetcode.com/problems/armstrong-number/

My Answer 1: Accepted (Runtime: 28 ms - 78.24% / Memory Usage: 14.2 MB - 39.76%)

class Solution:
    def isArmstrong(self, n: int) -> bool:
        num = n
        ans = 0
        while num:
            ans += (num%10) ** len(str(n))
            num //= 10
        if ans == n:
            return True
        else:
            return False

numn 복사 후

한자리씩 n제곱한 값은 ans 에 더해주고

ansn 비교해서 같으면 True, 다르면 False return

문제를 꼼꼼히 읽자..^^


1008. Construct Binary Search Tree from Preorder Traversal

https://leetcode.com/problems/construct-binary-search-tree-from-preorder-traversal/

My Answer 1: Accepted (Runtime: 36 ms - 76.29% / Memory Usage: 14.1 MB - 88.59%)

# 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 bstFromPreorder(self, preorder: List[int]) -> TreeNode:
        root = TreeNode(preorder.pop(0))
        
        for i in range(len(preorder)):
            r = root
            while True:
                if preorder[i] < r.val:
                    if r.left:
                        r = r.left
                    else:
                        r.left = TreeNode(preorder[i])
                        break
                else:
                    if r.right:
                        r = r.right
                    else:
                        r.right = TreeNode(preorder[i])
                        break
        
        return root

preorder[0] 값으로 root 를 만들어줌

나머지 값들은 root 에서 시작해서 트리 끝쪽의 적절한 위치 찾아주기
=> 작으면 왼쪽으로, 크면 오른쪽으로
=> 루트의 left 나 right 가 비어있는 곳까지 찾아가서 TreeNode 생성
=> 자리 찾으면 break 후, 다음 값 차례~

profile
Hello, World!

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN