原创 買賣股票的最佳時機(兩道題)

題目1:給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 示例 1: 輸入: [7,

原创 初級算法之動態規劃:最大子序和

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1]

原创 中級算法之數組和字符串:三數之和

給定一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 示例: 給定數組 nums

原创 中級算法之樹和圖:填充每個節點的下一個右側節點指針

給定一個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每個 n

原创 中級算法之樹和圖:中序遍歷二叉樹(非遞歸)

用棧來存,先跑到最左邊,然後再依次出棧去找右邊 vector<int> inorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> s; Tr

原创 初級算法之設計問題:shuffle an array

打亂一個沒有重複元素的數組。 示例: // 以數字集合 1, 2 和 3 初始化數組。 int[] nums = {1,2,3}; Solution solution = new Solution(nums); // 打亂數

原创 中級算法之排序和搜索:顏色分類

顏色分類 給定一個包含紅色、白色和藍色,一共 n 個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。 此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼

原创 初級算法之鏈表:反轉鏈表

反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 進階: 你可以迭代或遞歸地反轉鏈表。你能否用兩種方法解決這道題? 方法1: 設置三個指針進行反轉,one

原创 初級算法之排序和搜索:合併兩個有序數組

給定兩個有序整數數組 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成爲一個有序數組。 說明: 初始化 nums1 和 nums2 的元素數量分別爲 m 和 n。 你可以假設 nums1

原创 初級算法之動態規劃:打家劫舍

返回該章節 打家劫舍 你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每個房屋

原创 初級算法之數組:從排序數組中刪除重複項

從排序數組中刪除重複項 給定一個排序數組,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。 不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。 示例 1:

原创 初級算法之字符串:實現 strStr()

實現 strStr() 函數。 給定一個 haystack 字符串和一個 needle 字符串,在 haystack 字符串中找出 needle 字符串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。 示例 1: 輸

原创 中級算法之數組和字符串:無重複字符的最長子串

給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: "abcabcbb" 輸出: 3 解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。 示例 2: 輸入: "bbbbb" 輸

原创 初級算法之字符串:字符中的第一個唯一字符

給定一個字符串,找到它的第一個不重複的字符,並返回它的索引。如果不存在,則返回 -1。 案 例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 注意事項:您可以假定該字符串只包含

原创 中級算法之數組和字符串:字謎分組

給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。 示例: 輸入: ["eat", "tea", "tan", "ate", "nat", "bat"], 輸出: [ ["ate","eat