原创 LeetCode 458. Poor Pigs

問題描述 There are 1000 buckets, one and only one of them is poisonous, while the rest are filled with water. They al

原创 二進制中1的個數(Java實現)

問題描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 解決方案 代碼如下: public int NumberOf1(int n) { if(n == 0)

原创 把二叉樹打印成多行(Java實現)

問題描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 解決方案 代碼如下: import java.util.ArrayList; import java.util.LinkedList; /* p

原创 java中ArrayList、LinkedList和Vector的區別與選取

java中常用的List的實現類有ArrayList、LinkedList和Vector。 ArrayList 底層通過數組實現,查詢速度快,增刪改慢。 LinkedList 底層通過鏈表實現,增刪改快,查詢速度慢。 Vector

原创 爲什麼會有多線程?什麼是線程安全?如何保證線程安全?(帶詳細例子)

本文將會回答這幾個問題: 爲什麼會有多線程? 什麼是線程安全? 怎麼樣保證線程安全? 爲什麼會有多線程 顯然,線程安全的問題只會出現在多線程環境中,那麼爲什麼會有多線程呢? 最早期的計算機十分原始,還沒有操作系統。想要使用計算

原创 java語言實現位圖

最近在做項目用到了位圖,但是java中沒有實現類,就自己寫了一個,底層用byte數組進行封裝,代碼如下: /** * 位圖實現類 */ public class BitMap { private int length;

原创 求根號2的值(兩種方法 java實現)

問題描述 計算根號2的值,保留小數點後10位。 解決方案1 利用二分查找來做,代碼如下: public static double squareTwo(){ final double frequency

原创 求二叉樹兩個節點的最近公共父節點的兩種方法(java實現)

問題描述 求二叉樹兩個節點的最近公共父節點。 解決方案1 首先找到根節點到兩個節點的路徑,然後將其中一個路徑加入到哈希表中,然後遍歷另一個路徑,在哈希表中有相同的則返回即可,代碼如下: public static Tree

原创 Kth Number問題的三種解法(java實現)

問題描述 給定一個無序數組,找到其中第k大的數。 解決方案 方案1:堆解法 維護一個包含k個數的堆,時間複雜度O(nlogk) 方案2:快排變形 方案3:BFPRT算法 本質上是快排變性算法的優化,每次在partion選取

原创 LeetCode81.搜索旋轉排序數組 II(java實現)

問題描述 假設按照升序排序的數組在預先未知的某個點上進行了旋轉。 ( 例如,數組 [0,0,1,2,2,5,6] 可能變爲 [2,5,6,0,0,1,2] )。 編寫一個函數來判斷給定的目標值是否存在於數組中。若存在返回 tr

原创 LeetCode668.乘法表中第 k 小的數(java實現)

問題描述 幾乎每一個人都用 乘法表。但是你能在乘法表中快速找到第 k 小的數字嗎? 給定高度 m 、寬度 n 的一張 m * n的乘法表,以及正整數 k,你需要返回表中第 k 小的數字。 解決方案 首先編寫一個計算乘法表中

原创 LeetCode240.搜索二維矩陣 II(java實現)

問題描述 編寫一個高效的算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性: 1.每行的元素從左到右升序排列。 2.每列的元素從上到下升序排列。 解決方案 從右上角開始搜索,逐步進行,代碼如下: pub

原创 LeetCode25. Reverse Nodes in k-Group(每k個節點反轉鏈表,java實現)

問題描述 k個一組反轉鏈表。 解決方案 代碼如下: public class ReverseKGroup { public static void main(String[] args){ Li

原创 LeetCode153.旋轉數組的最小數字(java實現)

問題描述 假設按照升序排序的數組在預先未知的某個點上進行了旋轉。 ( 例如,數組 [0,1,2,4,5,6,7] 可能變爲 [4,5,6,7,0,1,2] )。 請找出其中最小的元素。 你可以假設數組中不存在重複元素。

原创 LeetCode4. Median of Two Sorted Arrays(java實現)

問題描述 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted