原创 LeetCode小算法記錄(五十)最長迴文子串

給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。 示例 1: 輸入: "babad" 輸出: "bab" 注意: "aba" 也是一個有效答案。 示例 2: 輸入: "cbbd" 輸出: "bb"

原创 LeetCode小算法記錄(四十七)生命遊戲

根據 百度百科 ,生命遊戲,簡稱爲生命,是英國數學家約翰·何頓·康威在 1970 年發明的細胞自動機。 給定一個包含 m × n 個格子的面板,每一個格子都可以看成是一個細胞。每個細胞都具有一個初始狀態:1 即爲活細胞(live),或 0

原创 JVM虛擬機轉載一

引言 java對於其它語言(c/c++)來說,創建一個對象使用後,不用顯式的delete/free,且能在一定程度上保證系統內存資源及時回收,這要功歸於java的自動垃圾回收機制(Garbage Collection,GC),但也是因爲自

原创 LeetCode小算法記錄(五十六)除數博弈

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。 最初,黑板上有一個數字 N 。在每個玩家的回合,玩家需要執行以下操作: 選出任一 x,滿足 0 < x < N 且 N % x == 0 。 用 N - x 替換黑板上的數字 N 。

原创 LeetCode小算法記錄(六十六)雞蛋掉落

你將獲得 K 個雞蛋,並可以使用一棟從 1 到 N  共有 N 層樓的建築。 每個蛋的功能都是一樣的,如果一個蛋碎了,你就不能再把它掉下去。 你知道存在樓層 F ,滿足 0 <= F <= N 任何從高於 F 的樓層落下的雞蛋都會碎,從 

原创 LeetCode小算法記錄(五十四)爬樓梯

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

原创 LeetCode小算法記錄(六十一)括號生成

數字 n 代表生成括號的對數,請你設計一個函數,用於能夠生成所有可能的並且 有效的 括號組合。   示例: 輸入:n = 3 輸出:[        "((()))",        "(()())",        "(())()",

原创 LeetCode小算法記錄(六十三)數字序列中某一位的數字

數字以0123456789101112131415…的格式序列化到一個字符序列中。在這個序列中,第5位(從下標0開始計數)是5,第13位是1,第19位是4,等等。 請寫一個函數,求任意第n位對應的數字。   示例 1: 輸入:n = 3

原创 LeetCode小算法記錄(五十七)打家劫舍

你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每個房屋存放金額的非負整數數組,計算你在

原创 LeetCode小算法記錄(五十三)編輯距離

讓我們先用 分治(divide and conquer) 的思想來分解一下子問題。然後用搜索解決這些子問題。 設有兩個字符串 A,B,長度分別爲 La,Lb。我們的每次操作都讓 A,B 的相同後綴儘可能的長。 舉幾個例子理解下相同後綴:

原创 LeetCode小算法記錄(五十八)機器人的運動範圍

地上有一個m行n列的方格,從座標 [0,0] 到座標 [m-1,n-1] 。一個機器人從座標 [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數位之和大於k的格子。例如,當k

原创 LeetCode小算法記錄(五十五)連續序列

給定一個整數數組(有正數有負數),找出總和最大的連續數列,並返回總和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。 進階: 如果你已經實現複雜度

原创 關於transient關鍵字與序列化的一些知識點

這個關鍵字的作用其實我在寫java的序列化機制中曾經寫過,不過那時候只是簡單地認識,只要其簡單的用法,沒有深入的去分析。這篇文章就是去深入分析一下transient關鍵字。 一、初識transient關鍵字 其實這個關鍵字的作用很好理解,

原创 LeetCode小算法記錄(四十九)反轉鏈表

定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表並輸出反轉後鏈表的頭節點。   示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL   限制: 0 <= 節點個數 <= 5000 來源:力

原创 LeetCode小算法記錄(五十二)LFU緩存

設計並實現最不經常使用(LFU)緩存的數據結構。它應該支持以下操作:get 和 put。 get(key) - 如果鍵存在於緩存中,則獲取鍵的值(總是正數),否則返回 -1。 put(key, value) - 如果鍵不存在,請設置或插入