程式設計實踐筆記No.9
阿新 • • 發佈:2021-01-21
技術標籤:程式設計實踐
程式設計實踐筆記No.9
寫在最前面,程式設計一直是我的短板,希望在leetcode練習中獲得進步!
參考Datawhale組隊學習中“LeetCodeTencent”
題目一088 合併兩個有序陣列
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。
程式碼
class Solution:
def merge(self, nums1: List[int ], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
# .extend()
nums1[:] = sorted(nums1[:m]+nums2)
return nums1
題目二 089 格雷編碼
格雷編碼是一個二進位制數字系統,在該系統中,兩個連續的數值僅有一個位數的差異。
給定一個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。
位運算
運算 | 描述 |
---|---|
^ | 按位異或運算子:當兩對應的二進位相異時,結果為1 |
<< | 左移動運算子:運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0 |
程式碼
class Solution:
def grayCode(self, n: int) -> List[int]:
res = [0]
for i in range(n):
for j in range(len(res) - 1, -1, -1):
res.append(res[j] ^ (1 << i))
return res
題目三 104 二叉樹的最大深度
給定一個二叉樹,找出其最大深度。
二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。
說明: 葉子節點是指沒有子節點的節點。
遞迴
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == nullptr) return 0;
l = maxDepth(root->left);
r = maxDepth(root->right);
return max(l,r)+1;
}
};
時間複雜度:O(N)
空間複雜度:O(height)