Simon Lai's Blog
  • 首頁
  • 歸檔
  • 分類
  • 標籤
  • 關於

110. Balanced Binary Tree - Easy

前往題目 這題也是做過的 心得 這題的考點就是如何有效遍歷 想了十分鐘,曾經有想過484直接用遞迴然後紀錄每個節點的高度 因為想不出來怎麼實作,於是直接看解答,還真的是我想的這個樣子 結論就是對於遞迴還不是非常熟 思路 樹遞迴每個節點 紀錄left和right的高度 比較每個左子樹以及右子樹的高度,如果大於1那整個tree就不是balanced binary tree Codeprivate
2023-12-13
Leetcode > Easy
#Leetcode #心得 #Binary Tree #Depth-First Search #Tree

973. K Closest Points to Origin - Medium

前往題目 這題之前寫過心得,照搬一下 心得 這題非常妙,用到的資料結構也不一樣,只要知道如何使用就很簡單 使用MinHeap或是MaxHeap就可以完美解決 使用MaxHeap的時間複雜度更好一點 PriorityQueue會根據Comparator來排序,排序時間是logN(因為使用heap,樹結構),N是項數 思路 (以MinHeap為例子) 新建一個MinHeap 把point都放入mi
2023-12-13
Leetcode > Medium
#Leetcode #心得 #Array #Heap #Priority Queue

300. Longest Increasing Subsequence - Medium

前往題目 想法 毫無頭緒因為不需要連續,中間可以斷掉… 思路有很多種作法: DFS DFS with cache DP 採用DP,因為$O(n^2)$,相較於DFS $O(2^n)$ 觀察規律,從後往前,因為最後一個一定是只有自己,也就是長度為1,以此往前推 影片中解釋得更清楚 Code class Solution { public int lengthOfLIS
2023-12-11
Leetcode > Medium
#Leetcode #心得 #Array #Dynamic Programming

338. Counting Bits - Easy

前往題目 想法 毫無想法,只想得到轉成binary然後直接疊代 思路 觀察0~8的binary會發現有一定規律,如下圖 Offset從0,1,4,8,16,兩倍成長 只要1加上最近的offset的值就是答案,那個1就是MSB(Most significant bit) 可能看解是有點模糊,但是看code應該就會清楚很多了 Code class Solution { pub
2023-12-09
Leetcode > Easy
#Leetcode #心得 #Dynamic Programming #Bit Manipulation

542. 01 Matrix - Medium

前往題目 想法 為了這題先花了兩三個小時弄懂直到能自己寫出BFS 隔一天再來挑戰這題寫的就蠻順的,但是回想BFS加上coding,從頭寫到尾就花了半小時 最後雖然還是fail,但離正解只差一步之遙 原因是沒完全搞清楚需要更新的cell以及不用更新的cell之間的關係 因為需要更新的cell,初始值是1,讓我腦袋打結 思路由於是算距離,所以這題利用BFS不斷更新每個相鄰cell的距離 一樣先記
2023-12-08
Leetcode > Medium
#Leetcode #心得 #Array #Matrix #Breadth-First Search

692. Top K Frequent Words - Medium

前往題目 想法 只知道八成需要hashmap,sorting的部分沒有想到什麼好方法 思路 Hashmap紀錄每個詞出現的頻率 根據題目條件排序,同樣頻率的詞照首字母排序,然後頻率由高到低排序 Codeclass Solution { public List<String> topKFrequent(String[] words, int k) {
2023-12-08
Leetcode > Medium
#Leetcode #心得 #String #Hash Table #Sorting

57. Insert Interval - Medium

前往題目 這題之前做過,所以照搬一下 想法 這題卡在不知道如何處理interval重疊的問題 但其實很簡單,因為有重疊的部分只要取左值最小與右值最大就可以了,用以下兩個語句 newInterval[0] = Math.min(currInterval[0], newInterval[0]); // Merge the interval newInterval[1] = Math.max(cur
2023-12-06
Leetcode > Medium
#Leetcode #心得 #Array

Flask實作單用戶登入-擴展原有project

擴展之前做的project,加上單用戶登入認證才能看到網頁內容以及登出功能,並參考教程開發 最新教程在這裡: Flask 入门教程3.0 (2022/07/16發布) 目標 網頁供單人使用 輸入帳號密碼驗證後才能進入並使用網頁 前置作業 只要是python程式碼就寫在app.py 首先定義一下Model class以儲存帳號
2023-12-06
Project
#Flask #HTML #CSS #網頁開發 #Flask-Login #Jinja2

287. Find the Duplicate Number - Medium

前往題目 想法 毫無想法,因為不能動array,然後一定要constant time 思路這題連neetcode大大都說討厭,這是我第一次聽到他說不喜歡題目🤣總之就是一個沒看過的人根本就幾乎不可能30分鐘內想出來的問題 Linked List cycle 快慢指針 Floyd's algo. Code這題背就對了 詳細解釋可以看Neetcode大大的影片或是討論區 class
2023-12-06
Leetcode > Medium
#Leetcode #心得 #Two Pointers #Floyd's Alogrithm

235. Lowest Common Ancestor of a Binary Search Tree - Medium

前往題目 想法 這題之前寫過,這次嘗試寫出來但只對了一半,有冗餘條件 思路這題重點就只有條件,看出條件就解出來了 因為BST的特性所以: 當p和q的值大於root,就要往右邊找,因為一定在右邊;反之,往左邊找 當p和q不是都大於或小於root的值就代表找到那個LCA了 Codeclass Solution { public TreeNode lowestCommonAnc
2023-12-05
Leetcode > Medium
#Leetcode #心得 #Binary Tree #Tree
1…3031323334…36

搜尋

Hexo Fluid