# LEECODE 筆記
# 常用工具語法
## Array
1. n:i for i, n in enumerate(nums1) --> 取index+數字
2. s_list = list(s) -->字串轉陣列-->''.join(s_list)-->組合回來
3. arr.reverse()-->array反過來,不須賦值
4. arr.split()

## Set
## Queue
q = collections.deque() #建立queue
q.append("元素") #加入變數
first_element = q.popleft() # 返回並移除最左側元素 "元素1"
## Stack
stack.append("元素1") # 加入element
top_element = stack.pop() # 返回並移除"最頂element"
## Dictionary
value = d.get("key") # 字典取值,如果沒有值不會拋錯

## 正負無窮大
float('-inf') = 負無限大
float('inf') = 正無限大
# 模組好題目
## Two Pointer
題目:
392. Is Subsequence
## Prefix Sum
使用點:找一段array,index i ~ index j 的sum


## Monotonic(單調_遞增or遞減) Stack
**使用點: 找next/previous greater 或是 next/previous smaller element in an array**
當找到一個比stack頂部數字大的數字時,這個數字就是頂部元素的"下一個更大元素",我們不斷彈出堆疊頂部元素,直到遇到一個>當前元素的元素或堆疊為空。
ex: nums2 = [1,3,4,2]

題目:
1. 496. Next Greater Element I
## Sliding Window
題目:
1. 643. Maximum Average Subarray I
## Tree
使用點:
1. BST取得小~大排序->Inorder Traversal
2. serialization一棵樹->Preorder Traversal
3. 處理子節點再處理父節點->Postorder Traversal
4. 上至下,左至右->Level Order Traversal
5. 樹的最大深度
```python
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
```
6.
# SQL
1. select <font color="#f00">distinct</font>(xxx) -->選取不重複
2. order by xxx/1 --> 預設ASC(升)/DESC(降)
3. group by -->分類聚合函數的結果-->進一步篩選用Having
4. 日期差異-->DATEDIFF(end_date, start_date)
