原创 LeetCode46. 全排列——回溯

給定一個沒有重複數字的序列,返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] //計算全排列

原创 50.實現 pow(x, n)

實現 pow(x, n) ,即計算 x 的 n 次冪函數。 示例 1: 輸入: 2.00000, 10 輸出: 1024.00000 示例 2: 輸入: 2.10000, 3 輸出: 9.26100 示例 3: 輸入: 2.000

原创 LeetCode16——最接近的3數之和

給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數,使 得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。 例如,給定數組 nums = [-1,2

原创 動態規劃——LeetCode爬樓梯

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1

原创 面試題05. 替換空格

難度:簡單 請實現一個函數,把字符串 s 中的每個空格替換成"%20"。 示例 1: 輸入:s = “We are happy.” 輸出:“We%20are%20happy.” public class ReplaceSpace

原创 面試題20. 表示數值的字符串

驗證給定的字符串是否可以解釋爲十進制數字。 例如: “0” => true " 0.1 " => true “abc” => false “1 a” => false “2e10” => true " -90e3 " => t

原创 finally語句到底在return之前還是之後執行?

finally語句的執行有一定前提,需執行到try語句。如果在try語句之前就返回,finally語句必然不會執行。此外,在執行try語句過程中,終止JVM也不會執行finally語句。所以,在finally語句塊執行的前提下,討

原创 面試題06. 從尾到頭打印鏈表

輸入一個鏈表的頭節點,從尾到頭反過來返回每個節點的值(用數組返回)。 /** * Definition for singly-linked list. * public class ListNode { * int

原创 數組中的重複數字

找出數組中重複的數字。 “在一個長度爲 n 的數組 nums 裏的所有數字都在 0~n-1 的範圍內。”數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。 示例 1:

原创 股神

經過嚴密的計算,小賽買了一支股票,他知道從他買股票的那天開始,股票會有以下變化:第一天不變,以後漲一天,跌一天,漲兩天,跌一天,漲三天,跌一天…依此類推。 爲方便計算,假設每次漲和跌皆爲1,股票初始單價也爲1,請計算買股票的第n天

原创 LeetCode 34 在排序數組中查找元素的第一個和最後一個位置

給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。 你的算法時間複雜度必須是 O(log n) 級別。 如果數組中不存在目標值,返回 [-1, -1]。 示例 1

原创 LeetCode 17—— 回溯

給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。 給出數字到字母的映射如下(與電話按鍵相同)。注意 1 不對應任何字母。 示例: 輸入:“23” 輸出:[“ad”, “ae”, “af”, “bd”, “be

原创 CAS筆記

CAS(Compare And Swap) 獨佔鎖是一種悲觀鎖,而 synchronized 就是一種獨佔鎖,synchronized 會導致其它所有未持有鎖的線程阻塞,而等待持有鎖的線程釋放鎖。所謂樂觀鎖就是,每次不加鎖而是假設

原创 BlockingQueue 實現生產者消費者問題

FIFO 隊列 :LinkedBlockingQueue、ArrayBlockingQueue(固定長度) 優先級隊列 :PriorityBlockingQueue 提供了阻塞的 take() 和 put() 方法:如果隊列爲

原创 Java中對象的淺拷貝與深拷貝

淺拷貝:拷貝對象與原始對中的引用類型引用同一個對象(指針指向同一個對象) public class CloneDemo implements Cloneable{ private int[] arr; publi