1. 程式人生 > 其它 >程式設計實踐筆記No.9

程式設計實踐筆記No.9

技術標籤:程式設計實踐

程式設計實踐筆記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)
在這裡插入圖片描述