原创 springboot+jQuery+JPA小小小項目

項目概述 平時我們工作學習中,需要記錄到自己改動過哪些文件,以方便自己日後總結歸納或者上線等。那麼一般我們可以採用表格來做,不過作爲小小程序員,興趣之下就做了這個小小小項目,用來記錄文件的修改記錄,提供記錄的增刪改查功能。 技術選

原创 深度優先及廣度優先詳解——java

以具體的例子來距離,假設我們現在有如下一個圖: 我們要遍歷上述這個無向圖,就需要用到深度優先和廣度優先遍歷了,圖的鄰接矩陣爲: [0, 1, 1, 0, 0] [1, 0, 1, 1, 1] [1, 1, 0, 0, 0] [0

原创 平衡二叉樹AVL以及其旋轉——java

概念分析 平衡二叉樹也叫平衡二叉搜索樹,又被稱爲AVL樹,它能保證查詢效率較高 他具有以下特點:它是一顆空樹或者它的左右兩顆子樹的高度差的絕對值不大於一,並且左右子樹都是平衡二叉樹,其也滿足二叉排序樹的特點 小練習 看過上述的

原创 二叉排序樹——BST(java)

概念分析 二叉排序樹:對於二叉排序樹的任何一個非葉子節點,要求左子結點的值比當前結點的值要小,右子結點的值比當前結點的值要大。如果有相同的值,可以將該結點放在左子結點或者右子結點。 注:下文中所有BST均代表二叉排序樹(Binar

原创 堆排序——Java與Go實現

概念分析 堆排序是使用堆這種數據結構進行排序的方法。(好像是廢話) 思路分析 首先,我們將待排序的數組看作一個完全二叉樹 將此二叉樹轉成大頂堆或者小頂堆 將堆頂元素與堆的最後一個元素互換,之後丟棄最後一個元素 重複第二步與第三步

原创 力扣3.—— 無重複字符的最長子串

1. 題目描述 給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: “abcabcbb” 輸出: 3 解釋: 因爲無重複字符的最長子串是 “abc”,所以其長度爲 3。 示例 2: 輸入: “bb

原创 GO、JAVA實現冒泡、選擇、插入排序

1. 冒泡排序 數組中每一個元素與其後一個元素進行比較,較大的或者較小的放在後面,即其與後面這個元素換位置。即第一個與第二個比,第二個與第三個比,知道倒數第二個與倒數第一個比,之後在數組的末尾就是最大或者最小的數了;之後繼續上一個

原创 逆波蘭表達式求值——力扣題庫

1. 題目描述 根據逆波蘭表示法,求表達式的值。 有效的運算符包括 +, -, *, / 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。 說明: 整數除法只保留整數部分。 給定逆波蘭表達式總是有效的。換句話說,表達式總會得

原创 約瑟夫問題——環形鏈表實現

1. 約瑟夫問題 約瑟夫問題是個有名的問題:N個人圍成一圈,從第一個開始報數,第M個將被殺掉,最後剩下一個,其餘人都將被殺掉。例如N=6,M=5,被殺掉的順序是:5,4,6,2,3,1。 2. 思路分析 採用環形鏈表的方式,該鏈表

原创 反轉單鏈表——力扣面試題24

1. 思路 本方法爲頭插法,即建立一個新的頭結點,將原鏈表按序插入到頭結點後,新插入的節點的next域指向之前的結點。 1.1 圖解 1.2 運行結果 2. 代碼 /** * Definition for singly-li

原创 單鏈表——java

1. 單鏈表 單鏈表是一種鏈式存儲結構,其包括data域以及next域。data內存放數據,next指向下一個節點。 1.1 巨醜的圖解 如圖即是單鏈表的邏輯結構 2. 操作 2.1 節點類 class Node<E>{

原创 數組實現隊列——java

1.隊列 隊列是一種線性表,它在隊列尾部插入元素,在隊列頭刪除元素。 2.設計 採用靜態數組的方式實現隊列,並且測試使用,所以只支持int類型,感興趣的朋友可以自己製作泛型隊列。其中設計指向頭的元素:front,指向最後一個元素的

原创 數據結構——稀疏數組(java)

1.概念分析 稀疏數組:二維數組中存在大量的無意義元素,而其中有意義的元素只佔很少一部分,此時我們可以將其進行壓縮,來達到減少內存消耗的作用。 2.舉例 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

原创 LeetCode最小棧

1.題目描述 設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) – 將元素 x 推入棧中。 pop() – 刪除棧頂的元素。 top() – 獲取棧頂元素。 getMin() –

原创 力扣有效的括號

1.題目描述 給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 注意空字符串可被認爲是有效字符串