原创 給定一個數組,判斷從開始能否走到結束,最多需要幾步?

1、給定一個非負數組,數組中的元素代表從當前位置可以向後跳幾步,判斷能否走到數組末尾。例如:A = [2,3,1,1,4], return true;A = [3,2,1,0,4], return false. public bo

原创 Java 建造者模式

描述:將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。建造模式是將複雜的內部創建封裝在內部,對於外部調用的人來說,只需要傳入建造者和建造工具,對於內部是如何建造成成品的,調用者無需關心。“建造的內容”是由建造

原创 一個無序整數數組中找到最長連續序列(Longest Consecutive Sequence)和兩個元素使得相差最小

無序數組中查找最長連續序列: 1、最笨的方法,首先將無序數組排序,然後依次遍歷查找最長連續序列。時間複雜度爲O(nlgn),空間複雜度爲O(1)。 2、首先將元素存入HashSet,然後逐個遍歷原數組。判斷當前遍歷的元素-1在不

原创 單例模式(多例,線程安全)

單例模式的本質是控制實例的個數,例如限制代碼中的實例個數爲確定的n個,一般情況下爲1個。看代碼: class ConnectionManager { private static ConnectionManager man

原创 MapReduce詳細的工作流程(MapReduce2)

上一篇詳細講了MapReduce1的工作流程,這一篇主要講基於YARN系統的MapReduce 2的工作流程。 對於大於4000個節點的集羣來說,MapReduce1系統將會產生一個規模瓶頸,因此Yahoo在2010年開始設計下

原创 無序數組O(n)時間找到排序後的兩個相鄰元素使得他們之間的差最大

1、基數排序,然後根據排序後的數組找到相差的最大值。 public int maximumGap(int[] nums) { if (nums == null || nums.length < 2) { retur

原创 KNN算法

1、介紹 KNN算法又稱爲k近鄰分類(k-nearest neighbor classification)算法。KNN是一種監督類型的分類算法,通過計算新數據與訓練數據特徵值之間的距離,然後選取K(K>=1)個距離最近的鄰居進行分類判斷(

原创 ES索引存儲原理

ES索引存儲原理 不變性 寫到磁盤的倒序索引是不變的:自從寫到磁盤就再也不變。 這會有很多好處: 不需要添加鎖。不存在寫操作,因此不存在多線程更改數據。 提高讀性能。一旦索引被內核的文件系統做了Cache,絕大多數的讀操作會直接從內存

原创 nginx tcp模塊安裝

nginx tcp模塊安裝 nginx版本 選擇版本 tcp_model https://github.com/yaoweibin/nginx_tcp_proxy_module 初始 nginx 1.12 版本安裝 需要安裝Open

原创 數組中除一個元素外其他所有元素出現二或三次,找到只出現一次的元素

1、數組中除一個元素外其他所有元素出現二,找到只出現一次的那個元素。 public int singleNumber(int[] nums) { int res = nums[0]; for (int i

原创 全排列問題

1、打印一個無重複元素數組的全排列 public List<List<Integer>> permuteUnique(int[] nums) { List<List<Integer>> ans = new ArrayLis

原创 二叉樹的三種非遞歸遍歷和morris遍歷

1、先序遍歷 public static void printPreOrder(TreeNode node) { Queue<TreeNode> queue = new LinkedList<TreeNode>();

原创 HDFS的一些常問問題

爲什麼HDFS的blocksize是128M? 磁盤的塊大小爲512byte,HDFS的塊大小爲128Mb,主要原因是爲了減少磁盤的尋道時間。一次尋道大約需要10ms,目前市面上的千兆網卡速度爲100Mb/s,尋道時間應該只佔傳輸時

原创 將一棵二叉樹按行輸出

給定一個二叉樹,按行從左到右輸出一個樹。例如按如下格式: 6 5 15 7 9 10 50 1、遞歸計算,感覺這種辦法好傻 public List<List<Integer>> levelOrder(TreeNode root

原创 恢復一棵二叉查找樹

二叉搜索樹中有兩個節點的值被相互交換,還原一個正常的二叉搜索樹。 二叉搜索樹,中序遍歷,每次遍歷的值都會比上次遍歷的值小。根據中序遍歷的這個性質可以找到值錯誤的節點,用first表示上一次遍歷的節點,用second表示當前遍歷的節點,但是