原创 leetcode--NumberofIslands

思路: 從第一行往下對每個'1'分別對右和下相鄰爲'1'的元素做union操作,最後每個'1'都和上下左右四個相鄰的元素做了union,union and find count數即爲island數。 union and find: 有幾種

原创 leetcode--CountCompleteTreeNodes

complete binary tree:最後一層以上的節點全部排滿,最後一層葉子節點都在左邊。(可能滿也可能不滿) 如果用前序中序或者後序遞歸的話,內存過大,時間也不夠。因此根據complete binary tree的性質,分別求最左

原创 leetcode--ImplementstrStr

思路: 利用kmp算法 /** * Created by marsares on 15/6/29. */ public class ImplementstrStr { public int strStr(String hays

原创 leetcode--ValidateBinarySearchTree

思路:在遞歸參數中加入左區間和右區間,當遞歸左子節點時更新右區間,當遞歸右子節點時更新左區間。 可以簡單地證明一下,如果左子節點要符合BST要求,首先得符合當前節點的區間範圍,然後要小於當前節點。因此更新右區間。 /** * Creat

原创 leetcode--BinaryTreeLevelOrderTraversal II (二叉樹層遍歷遞歸實現)

思路:先層遍歷在逆序 層遍歷遞歸實現:利用List<List>每次遞歸根據層號加入List中對應的List,遞歸的順序左節點在右節點之前就可以保證每一層左邊的節點比右邊的節點先加入List。 import java.util.Linked

原创 leetcode--Palindrome Partitioning

思路: 首先想到用深度優先,每次遞歸傳入之前的路徑鏈表,以及剩下的字符串。對剩下的字符串再次劃分成兩部分part1、part2,先判斷part1是否迴文然後將part1放入路徑鏈表,和part2一起傳入再次遞歸。 /*List<List<

原创 搜狐面試總結

一週前,被告知成爲阿里寶寶,心情跌落谷底。一週後,懷揣着剛打的兩份簡歷,收拾好心情,開始了杭州站的面試之旅。 第一站:搜狐媒體客戶端算法工程師 1.介紹我在intel做的Trumpet項目,並由此展開讓我在紙上寫spark的處理流程。熟悉

原创 leetcode--PalindromeLinkedList

思路: 爲了達到O(N)的時間複雜度和O(1)的空間複雜度,分成三步完成。 1.利用快慢指針找到中間節點 2.從中間節點到尾部反轉鏈表 3.從頭和尾向中間遍歷,判斷是否相等 public boolean isPalindrome(List

原创 intel實習第二個月總結

度過了浮躁的第一個月,第二個月開始接手Trumpet的測試任務,要求在月底之前完成Trumpet中Bicluster,SVD,LinearRegression的性能優化併發布第一個release。 第一週 follow up,在學弟離職前

原创 IO--ReaderAndWriter

Reader and Writer: Reader按照自定義的編碼從輸入流中進行讀取 Writer按照自定義的編碼寫入輸出流 InputStreamReader: 在初始化的時候傳入自定義的編碼以及輸入流,並生成解碼器進行讀操作。 pub

原创 leetcode--LinkedListCycleII

思路: 1.從head開始利快慢指針分別向後遍歷,快指針每次比慢指針多走一步,直到快指針和慢指針相遇。 2.創建一個新的慢指slow2針指向head,和之前的慢指針同時向後遍歷,直到兩個慢指針相遇,返回當前相遇的節點。 證明: 設head

原创 leetcode--LongestValidParentheses

思路: 遍歷s,遇到‘(’入棧,遇到‘)’且棧頂爲‘(’將棧頂出棧並計算長度。length=i-stack.peek()這樣可以將所有規範的長度計算出來。而遇到‘)’且棧頂不是‘(’說明0-i已經不能再形成規範的字符串,將i入棧,與之後的

原创 阿里巴巴面試總結

從學長內推到前兩天收到短信,看到最後一句話:青春正好,一路陽光。頓時感到之前的努力沒有白費,更多的挑戰,更大的夢想在等着我去實現。 作爲一個普通的應屆生,少不了前期漫長的準備。leetcode真的是個好網站,從五月中旬開始在leetcod

原创 leetcode--JumpGame

思路: 貪心算法,利用局部最優解達到全局最優解。在每個節點拓展能達到的最遠距離,如果當前節點能達到的最遠距離等於當前節點那麼就無法繼續前進,返回false。如果當前節點能達到的最遠距離大於等於末尾節點那麼返回true。 /** * Cr

原创 leetcode--LRU Cache

思路: LRU Cache:當緩存填滿的時候,刪除最久沒使用過的數據。 通過雙向鏈表記錄數據的使用情況,當get或者put一個<key,value>時,將鏈表中該node移到鏈表頭部。這樣鏈表尾部就是最久沒使用過的node。 通過hash