leetcode每日一題刷題記錄(10.26-10.30)

SIYY_發表於2020-10-30

10.26每日一題:1365. 有多少小於當前數字的數字

  1. 有多少小於當前數字的數字
class Solution:
    def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:
        place=[0] *101
        output=[]

        for n in nums:
            place[n] +=1 

        lessthan=[]
        temp=0

        for p in place:
            lessthan.append(temp)
            temp +=p

        for n in nums:
            output.append(lessthan[n])
        return output

10.27每日一題:144. 二叉樹的前序遍歷(二叉樹的四種遍歷)

# 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 preorderTraversal(self, root: TreeNode) -> List[int]:
        res=[]
        def dfs(root):
            nonlocal res
            if not root:
                return 
            res.append(root.val)
            dfs(root.left)
            dfs(root.right)
        dfs(root)
        return res

圖解 二叉樹的四種遍歷
在這裡插入圖片描述

94. 二叉樹的中序遍歷

94. 二叉樹的中序遍歷

145. 二叉樹的後序遍歷

145. 二叉樹的後序遍歷

102. 二叉樹的層序遍歷

102. 二叉樹的層序遍歷

10.28每日一題:1207. 獨一無二的出現次數

  1. 獨一無二的出現次數
class Solution:
    def uniqueOccurrences(self, arr: List[int]) -> bool:
        return len(set(collections.Counter(arr).values()))==len(set(arr))

就一行,服了
以後出現統計次數的,直接上Counter()
Collections模組使用了高效能容器資料型別,並且包含許多有用的資料結構,它的效能超過了內建的型別如 list,dict and tuple等。
Counter是一個容器,用來統計值出現的頻率
使用前需要先匯入模組

from collections import Counter

10.29每日一題:129. 求根到葉子節點數字之和

  1. 求根到葉子節點數字之和
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def sumNumbers(self, root: TreeNode) -> int:
        def dfs(root:TreeNode,prevTotal:int)-> int:
            if not root:
                return 0
            total=prevTotal*10+root.val
            if not root.left and not root.right:
                return total
            else:
                return dfs(root.left,total)+dfs(root.right,total)
        return dfs(root,0)

10.30每日一題:463. 島嶼的周長

  1. 島嶼的周長
class Solution:
    def islandPerimeter(self, grid: List[List[int]]) -> int:
        res=0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]==1:
                    res +=4
                    if i-1>=0 and grid[i-1][j]==1:
                        res -=2
                    if j-1>=0 and grid[i][j-1]==1:
                        res-=2
        return res

相關文章