原创 LintCode 二分法查找, 搜索插入位置 和 二維矩陣

1. 二分查找 給定一個排序的整數數組(升序)和一個要查找的整數target,用O(logn)的時間查找到target第一次出現的下標(從0開始),如果target不存在於數組中,返回-1。 樣例 在數組 [1, 2, 3,

原创 LintCode 尋找旋轉排序數組中的最小值

1 . 尋找旋轉排序數組中的最小值 假設一個旋轉排序的數組其起始位置是未知的(比如0 1 2 4 5 6 7 可能變成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 你可以假設數組中不存在重複的元素。 樣例

原创 動態規劃入門篇

本文整理轉載自:Hawstein’s Blog 動態規劃入門篇 什麼是動態規劃?? 動態規劃是拆分問題,定義問題的狀態和狀態之間的關係,使得問題能夠以遞推或者說分治的方式去解決問題。(詳情請點這裏)。因此,使用動態規劃求解問題時我

原创 LintCode 尾部的零

尾部的零 設計一個算法,計算出n階乘中尾部零的個數 樣例 11! = 39916800,因此應該返回 2 挑戰 O(logN)的時間複雜度 solutioin: 轉自Factorials and Trailing Zero

原创 二叉搜索樹

二叉搜索樹 二叉搜索樹:是一顆二叉樹但是其根節點的只要比左節點大比右節點小。 二叉樹的遍歷 給定一棵樹對其進行訪問 1.先序遍歷 (1). 訪問根節點 (2). 先序遍歷其左子樹 (

原创 LintCode 丟失的第一個正整數

丟失的第一個正整數 給出一個無序的正數數組,找出其中沒有出現的最小正整數。 樣例 如果給出 [1,2,0], return 3 如果給出 [3,4,-1,1], return 2 挑戰 只允許時間複雜度O(n)的算法,並

原创 圖的表示和遍歷

圖的表示 圖(Graph)是由頂點(Vertex)和邊(Edge)構成的一種集合,及 G=(V,E) ,圖在數據結構中有兩種表示方式:鄰接矩陣和鄰接鏈表 鄰接矩陣 對於圖G=(V,E) 的鄰接矩陣的表示方式,通常是將圖G的節點編爲

原创 LintCode x的平方根

x的平方根 實現 int sqrt(int N) 函數,計算並返回 N 的平方根。 樣例 sqrt(3) = 1 sqrt(4) = 2 sqrt(5) = 2 sqrt(10) = 3 挑戰 O(log(x)) s

原创 LintCode 更新二進制位

更新二進制位 給出兩個32位的整數N和M,以及兩個二進制位的位置i和j。寫一個方法來使得N中的第i到j位等於M(M會是N中從第i爲開始到第j位的子串) 樣例 給出N = (10000000000)2,M = (10101)2,

原创 03-樹2 List Leaves (25分)

03-樹2 List Leaves (25分) Given a tree, you are supposed to list all the leaves in the order of top down, and left

原创 LintCode 第一個錯誤的代碼版本

第一個錯誤的代碼版本 代碼庫的版本號是從 1 到 n 的整數。某一天,有人提交了錯誤版本的代碼,因此造成自身及之後版本的代碼在單元測試中均出錯。請找出第一個錯誤的版本號。 你可以通過 isBadVersion 的接口來判斷版本號

原创 LintCode 三數之和

1. 三數之和 給出一個有n個整數的數組S,在S中找到三個整數a, b, c,找到所有使得a + b + c = 0的三元組。 樣例 如S = {-1 0 1 2 -1 -4}, 你需要返回的三元組集合的是: (-1, 0,

原创 Saving James Bond - Easy Version

Saving James Bond - Easy Version This time let us consider the situation in the movie “Live and Let Die” in which J

原创 LintCode 將整數A轉換爲B

將整數A轉換爲B 如果要將整數A轉換爲B,需要改變多少個bit位? 樣例 如把31轉換爲14,需要改變2個bit位。 (31)10=(11111)2 (14)10=(01110)2 挑戰 你能想出幾種方法? solut

原创 動態規劃進階篇

動態規劃進階篇 如果你已經熟悉了動態規劃的基礎知識,那麼接下來我們來討論二維的動態規劃吧! 問題: 給定一個N×M 的表格,每個格子上放着一個蘋果。如果你從最左上角的格子上開始走,每次只能向下或者向右走,每到一個格子你就把蘋果收