原创 自定義顯示鎖工具類(具有超時功能)

接口 package runnable; import java.util.Collection; /** * @author Livingdd * 2019/11/23 16:21 **/ public interf

原创 中斷線程工具類

設置一個守護線程,和一個執行線程,讓守護線程去執行邏輯,超時後中斷執行線程,守護線程也隨之中斷。 /** * @author Livingdd * 設置一個執行線程和一個守護線程,讓守護線程去執行 * 2019/11/14 21:

原创 leetcode1114.按序打印

我們提供了一個類: public class Foo {   public void one() { print("one"); }   public void two() { print("two"); }   public void

原创 手寫簡易版動態代理

基礎代碼 先在此處聲明接口與實現類,後續會用到。 Dao接口: package dao; /** * @author Livingdd * 2020/4/30 10:47 **/ public interface Dao

原创 leetcode64.最小路徑和

給定一個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和爲最小。 說明:每次只能向下或者向右移動一步。 示例: 輸入: [   [1,3,1],   [1,5,1],   [4,2,1] ] 輸出:

原创 leetcode62.不同路徑

一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Finish”)。 問總共有多少條不同的路徑? 來源:力

原创 leetcode61. 旋轉鏈表

給定一個鏈表,旋轉鏈表,將鏈表每個節點向右移動 k 個位置,其中 k 是非負數。 示例 1: 輸入: 1->2->3->4->5->NULL, k = 2 輸出: 4->5->1->2->3->NULL 解釋: 向右旋轉 1 步: 5->

原创 String源碼閱讀(三)

public String[] split(String regex, int limit) { char ch = 0; //如果regex不是特殊字符,或者是前面有轉義字符\\的特殊字符,並且分割

原创 leetcode60.第k個排列

給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。 按大小順序列出所有排列情況,並一一標記,當 n = 3 時, 所有排列如下: "123" "132" "213" "231" "312" "321" 給定 n 和 k,返回

原创 leetcode59. 螺旋矩陣 II

給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。 示例: 輸入: 3 輸出: [  [ 1, 2, 3 ],  [ 8, 9, 4 ],  [ 7, 6, 5 ] ] 來源:力扣(Leet

原创 leetcode57.插入區間

給出一個無重疊的 ,按照區間起始端點排序的區間列表。 在列表中插入一個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。 示例 1: 輸入: intervals = [[1,3],[6,9]], newIn

原创 leetcode56.合併區間

給出一個區間的集合,請合併所有重疊的區間。 示例 1: 輸入: [[1,3],[2,6],[8,10],[15,18]] 輸出: [[1,6],[8,10],[15,18]] 解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併爲

原创 String源碼閱讀(二)

本篇主要介紹String的部分方法。如沒有閱讀過一部分,請先閱讀第一部分。 //返回value數組的長度,通俗易懂。 public int length() { return value.length; } /

原创 快速排序(遞歸以及非遞歸)

原理不說了,核心函數爲getParition,非遞歸用棧實現。 直接上代碼 package sort; import java.util.Stack; /** * @author Livingdd * 2019/8/26 14:

原创 leet55.跳躍遊戲

給定一個非負整數數組,你最初位於數組的第一個位置。 數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最後一個位置。 示例 1: 輸入: [2,3,1,1,4] 輸出: true 解釋: 從位置 0 到 1 跳 1 步