原创 什麼是動態規劃

本文整理轉載自:知乎什麼是動態規劃 什麼是動態規劃 動態規劃(dynamic programming)與分治法相似,都是通過組合子問題的解來求解原問題,動態規劃應用於子問題重疊的情況,即不同的子問題具有公共的子子問題。通常按照下面

原创 LintCode O(1)檢測2的冪次

O(1)檢測2的冪次 用 O(1) 時間檢測整數 n 是否是 2 的冪次。 樣例 n=4,返回 true; n=5,返回 false. 注意 O(1) 時間複雜度 solution: 在O(1) 時間內判斷一個整數是否爲

原创 LintCode 兩數之和

兩數之和 給一個整數數組,找到兩個數使得他們的和等於一個給定的數target。 你需要實現的函數twoSum需要返回這兩個數的下標, 並且第一個下標小於第二個下標。注意這裏下標的範圍是1到n,不是以0開頭。 樣例 numbe

原创 LintCode 木材加工

木材加工 有一些原木,現在想把這些木頭切割成一些長度相同的小段木頭,需要得到的小段的數目至少爲 k。當然,我們希望得到的小段越長越好,你需要計算能夠得到的小段木頭的最大長度。 樣例 有3根木頭[232, 124, 456],

原创 回溯法(Backtracking)

回溯法 回溯法概念 回溯算法有“通用的解題法”之稱。用它可以系統地搜索一個問題的所在解或任一解。回溯法是一個即帶有系統性又帶有跳躍性的所搜算法。 回溯法思想 在包含問題的所有解的解空間樹中,按照深度優先搜索的策略,從根結點出發深度探索解空

原创 LintCode Jump Game 跳躍遊戲

跳躍遊戲 給出一個非負整數數組,你最初定位在數組的第一個位置。    數組中的每個元素代表你在那個位置可以跳躍的最大長度。     判斷你是否能到達數組的最後一個位置。 樣例 A = [2,3,1,1,4],返回 true. A =

原创 Moore’s Voting Algorithm

Moore’s Voting Algorithm 接着上一篇 LintCode majority number (主元素), 繼續討論Moore Voting Algorithm。 Moore’s Voting Algorithm該算法是

原创 LintCode 快速冪

LintCode 快速冪 計算an % b ,其中a,b和n都是32位的整數。 樣例 例如 231 % 3 = 2 例如 1001000 % 1000 = 0 Solution: 顯然不能先計算an 之後再取餘。因爲,an

原创 word2vec模型

word2vec 動機:爲什麼要學習詞向量(Word Embeddings) 傳統的自然語言處理系統把詞(word)當作一個離散的原子符號。比如,貓可以使用Id537來表示,Id143表示狗。這些編碼是任意的,這些編碼對於系統處理不同的單

原创 LintCode majority numbe (主元素)

LintCode 主元素 主元素 給定一個整型數組,找出主元素,它在數組中的出現次數嚴格大於數組元素個數的二分之一。 給出數組[1,1,1,1,2,2,2],返回 1 挑戰 要求時間複雜度爲O(n),空間複雜度爲O(1) 。 sol

原创 排序算法之冒泡、插入和希爾排序

簡單排序算法 冒泡排序 冒泡排序算法是一種很簡單的排序算法,它重複的訪問要排序的數列,比較兩個相鄰的元素,如果這個兩個元素不是出於正確的位置及左邊的元素比右邊大,則交換這兩個元素的位置(從小到大排序)。一直重複這個過程直到所有的元素都是有

原创 鏈表環檢測算法

給定兩個LeetCode上的問題 Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up: Can you solve i

原创 lua初學者教程

lua 初學者教程 Lua 介紹 Lua是一門腳本語言,它的語法與C語言類似。它也是大小敏感的語言。但是Lua語法比較簡單,學習起來也比較容易。在lua語言中,除了關鍵字一切都是變量。 lua腳本的運行與python是一樣的。我們可以直接

原创 LintCode 不同的二叉查找樹

不同的二叉查找樹 給出 n,問由 1…n 爲節點組成的不同的二叉查找樹有多少種? 給出n = 3,有5種不同形態的二叉查找樹: 1 3 3 2 1 \ / /

原创 歸併排序與快速排序

分治法 分治法的思想:將原問題分解爲幾個規模較小但類似原問題的子問題,遞歸的求解這些子問題,然後合併這些子問題的解來建立原問題的解。及分而治之 分治模式在每層遞歸時都有三個步驟: 分解原問題爲若干子問題,這些子問題是原問題規模較小的實例