原创 軟件架構設計模式之 MVC-MVP-MVVM

題意描述: 什麼是 MVVM?與 MVC 有什麼區別?什麼又是 MVP ? 解題思路: Alice: 什麼是 MVVM MVC 什麼又是 MVP 呢? Bob: 我知道 MVVM 分別是指 Model(數據), View(視

原创 觀察者模式-發佈訂閱模式-及其實現

題意描述: 觀察者模式和發佈訂閱模式有什麼不同 ? 手寫一個觀察者模式的例子 ? 解題思路: Alice: 上次講了觀察者模式,發佈訂閱模式是什麼 ? Bob: 和觀察者模式很類似,發佈訂閱模式其實屬於廣義上的觀察者模式。在觀

原创 JavaScript 中的事件循環

題意描述: 給出以下代碼的運行結果。 輸入: async function async1() { console.log('async1 start'); await async2(); co

原创 數組shuffle

題意描述: 給定一個數組,隨機打亂該數組中元素的排列順序。 示例: 輸入:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 輸出:[4, 6, 1, 3, 2, 5, 7, 8, 9, 0] 解題思路: A:

原创 LeetCode-225-用隊列實現棧

題意描述: 使用隊列實現棧的下列操作: push(x) – 元素 x 入棧 pop() – 移除棧頂元素 top() – 獲取棧頂元素 empty() – 返回棧是否爲空 注意: 你只能使用隊列的基本操作-- 也就是 pu

原创 LeetCode-劍指Offe-32-1-從上到下打印二叉樹

題意描述: 從上到下打印出二叉樹的每個節點,同一層的節點按照從左到右的順序打印。 示例: 例如: 給定二叉樹: [3,9,20,null,null,15,7], 3 / \ 9 20 / \

原创 LeetCode-劍指Offer-32-||-從上到下打印二叉樹 ||

題意描述: 從上到下按層打印二叉樹,同一層的節點按從左到右的順序打印,每一層打印到一行。 示例: 例如: 給定二叉樹: [3,9,20,null,null,15,7], 3 / \ 9 20 /

原创 LeetCode-劍指Offer-32-|||-從上到下打印二叉樹 |||

題意描述: 請實現一個函數按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。 示例: 例如: 給定二叉樹: [3,9,20,null,nul

原创 LeetCode-劍指Offer-27-二叉樹的鏡像

題意描述: 請完成一個函數,輸入一個二叉樹,該函數輸出它的鏡像。0 <= 節點個數 <= 1000 例如輸入: 4 / \ 2 7 / \ / \ 1 3 6 9 鏡像輸出:

原创 LeetCode-劍指Offer-42-連續子數組的最大和

題意描述: 輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。 要求時間複雜度爲O(n)。 1 <= arr.length <= 10^5 -100 <= arr[i]

原创 LeetCode-劍指Offer-39-數組中出現次數超過一半的數字

題意描述: 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。你可以假設數組是非空的,並且給定的數組總是存在多數元素。 注意 1 <= 數組長度 <= 50000 示例: 輸入: [1, 2, 3, 2, 2, 2

原创 LeetCode-劍指Offer-24-翻轉鏈表

題意描述: 定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表並輸出反轉後鏈表的頭節點。 限制: 0 <= 節點個數 <= 5000 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->N

原创 LeetCode-215-數組中的第K個最大元素

題意描述: 在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 說明: 你可以假設 k 總是有效的,且 1 ≤ k ≤ 數組的長度。 示例: 示例一:

原创 LeetCode-148-排序鏈表

題意描述: 在 O(n log n) 時間複雜度和常數級空間複雜度下,對鏈表進行排序。 示例: 示例一: 輸入: 4->2->1->3 輸出: 1->2->3->4 示例二: 輸入: -1->5->3->4->0 輸出: -

原创 LeetCode-4-尋找兩個有序數組的中位數

題意描述: 給定兩個大小爲 m 和 n 的有序數組 nums1 和 nums2。 請你找出這兩個有序數組的中位數,並且要求算法的時間複雜度爲 O(log(m + n))。 你可以假設 nums1 和 nums2 不會同時爲空。