原创 刷題300. Longest Increasing Subsequence

一、題目說明 題目300. Longest Increasing Subsequence,給一列無序的整數,找出最大遞增序列的長度。難度是Medium! 二、我的解答 這個題目用dp解決,開始想簡單了。其中dp[i]表示,前面比nums[i

原创 刷題297. Serialize and Deserialize Binary Tree

一、題目說明 題目297. Serialize and Deserialize Binary Tree,序列號和反序列化二叉樹。難度是Hard! 二、我的解答 這個題目用了3個小時,用的非遞歸遍歷算法。用stack實現: class Cod

原创 刷題295. Find Median from Data Stream

一、題目說明 題目295. Find Median from Data Stream,數據流的中位數(數據爲奇數個,則爲中間的;否則爲中間2個數的平均數)。 二、我的解答 用一個數組實現,但是超時。改用插入排序如下: class Media

原创 刷題283. Move Zeroes

一、題目說明 題目283. Move Zeroes,給定一組數,將該組數中的0移動末尾,其他數據相對位置不變。 二、我的解答 class Solution{ public: void moveZeroes(vector<int>& n

原创 刷題279. Perfect Squares

一、題目說明 題目279. Perfect Squares,給定一個正整數n,找到m個數其平方和剛好是n。求m的最小值,難度是Medium! 二、我的解答 bfs算法: class Solution{ public: //bfs

原创 刷題253.Meeting Rooms II

一、題目說明 題目253.Meeting Rooms II,給定一列數,其中每個數表示會議開始、結束時間,計算最少需要的會議上的數量。難度是Medium! 二、我的解答 這個題目讀懂後,在紙上畫上座標軸,畫上各個會議時間的區間,然後從最早開

原创 刷題240. Search a 2D Matrix II

一、題目說明 題目240. Search a 2D Matrix II,從一個m*n的二維矩陣查找一個整數,每一行從左到右遞增,每一列從上到下遞增。 二、我的解答 先計算矩陣中點matrix[row_mid][col_mid],然後將矩陣分

原创 刷題239. Sliding Window Maximum

一、題目說明 題目239. Sliding Window Maximum,給一個數組,和窗口長度,窗口每次向右滑動1位,返回滑動窗口的最大值。時間複雜度要求是線性。 二、我的解答 最直接的辦法就是brute force,但是性能不足,複雜度

原创 刷題238. Product of Array Except Self

一、題目說明 題目238. Product of Array Except Self,給n個整數,返回一個數組,每個元素都是原數組除了該位置元素外的乘積。不能用除法,複雜度要求是O(n)。難度是Medium! 二、我的解答 看到這個問題,我

原创 刷題208. Implement Trie (Prefix Tree)

一、題目說明 題目208. Implement Trie (Prefix Tree),實現trie,包括insert、search、startsWith。 二、我的解答 Trie樹,又叫“字典樹”,“前綴樹”。實現代碼如下: class T

原创 刷題236. Lowest Common Ancestor of a Binary Tree

一、題目說明 題目236. Lowest Common Ancestor of a Binary Tree,在一個二叉樹中找兩個節點的最近公共祖先。難度是Medium! 二、我的解答 這個用二叉樹的遞歸遍歷,稍加改造即可: class So

原创 刷題206. Reverse Linked List

一、題目說明 題目206. Reverse Linked List,翻轉一個鏈表。難度是Easy!可以遞歸,也可以非遞歸。 二、我的解答 翻轉,這個確實不難,非遞歸算法: class Solution{ public: ListNod

原创 刷題234. Palindrome Linked List

一、題目說明 題目234. Palindrome Linked List,判斷一個鏈表是否是迴文。難度是Easy! 二、我的解答 這個題目,時間複雜度要求O(n),空間複雜的O(1)。如果不按照上述要求,迴文還是簡單的。 比如,將鏈表放到數

原创 刷題200. Number of Islands

一、題目說明 題目200. Number of Islands,在一個0(代表水)和1(代表陸地)組成的2d地圖中,計數“島嶼”的數量。 二、我的解答 本題目計算圖的最大連通分量,可以用圖的深度優先遍歷,也可用圖的廣度優先遍歷。 深度優先遍

原创 刷題226. Invert Binary Tree

一、題目說明 題目226. Invert Binary Tree,翻轉一個二叉樹。難度是Easy! 二、我的解答 這個題目,和二叉樹的遍歷類似。用遞歸方法(前、中、後序遍歷,按層遍歷都可以): class Solution{ public