原创 數據結構與算法之(漸進)時間複雜度

1. 搜了好多文章也沒太理解,看了下面這個大佬的文章之後有些理解了,附上大佬的博客地址: https://blog.csdn.net/qq_35661171/article/details/84313601 2. 重點概念總結一下: T(

原创 數據結構與算法之遞歸(8皇后問題)

1. 規則:有一個 8 x 8 的棋盤,放置皇后棋子,要求:所放的皇后不能在同一排,不能在同一列,不能在同一斜線 2. http://www.4399.com/baidugame/42643.htm  這個是4399裏8皇后小遊戲的地址

原创 java基礎之接口回調

1. 什麼是接口回調:我的理解是,在一個對象的方法參數中引用另一個實現了某個接口的對象的引用,且該引用爲接口引用(上轉型) 2. 爲什麼要用接口回調:我的理解是,解決業務、類與類或者模塊與模塊之間的協作問題 3. 怎麼用接口調用,code

原创 數據結構與算法之遞歸(迷宮回溯問題)

什麼是遞歸:顧名思義,遞歸就是自己調用自己。我自己理解遞歸的本質是不斷的開闢方法棧的過程 /** * 迷宮回溯 */ public class MazeBacktrack { public static void main

原创 java基礎-設計模式之代理模式(JDK代理)

1. 什麼是代理:由接口、實現類、以及代理類組成的一種設計模式(我自己的理解,可以看下面的快速入門案例) 2. 爲什麼要用代理:在不侵入目標方法的前提下增強目標方法的功能,這也符合Java的開閉原則 3. 怎樣使用代理:代理分爲靜態代理和

原创 數據結構與算法之計算器實現(中綴轉後綴,用後綴表達式實現)

/** * 後綴表達式實現計算器 */ public class SuffixExpressionCalculator { /** * 計算方法 * * @param infixExpr 中綴

原创 數據結構與算法之前綴、中綴、後綴表達式(中綴轉前綴、中綴轉後綴)

中綴表達式:我們熟悉的算術表達式,如:(3+4)*5-6+8 前綴表達式(波蘭表達式):機器熟悉的算術表達式,如:+ - * + 3 4 5 6 8 後綴表達式(逆波蘭表達式):機器熟悉的算術表達式,如:3 4 + 5 * 6 - 8 +

原创 數據結構與算法之棧(簡單計算器的實現)

//需要用到的棧類 public class StackDemo { private int top; private final int size; private final int[] stack;

原创 數據結構與算法之棧(簡單Demo,用單向鏈表來模擬棧)

/** * 用鏈表實現棧 */ public class StackLinkedList { private final Node head = new Node(-1); // 鏈表節點的最大值 pri

原创 數據結構與算法之單鏈表(增{包含增序增加}、刪、改、查)

直接上代碼吧,後面再總結一下: public class SinglyLinkedList { // 頭節點 private final Node headNode = new Node(0, "", "");

原创 數據結構與算法之棧(簡單demo,主要是理解棧的特點)

什麼是棧:先入後出的有序列表, 類似於彈夾壓子彈, 最後一顆在棧頂, 第一個元素在棧底 爲什麼要用棧:棧可以解決的問題有 1. 子程序調用; 2.遞歸; 3.表達式的轉換; 4.二叉樹的遍歷 快速入門: public class S

原创 數據結構與算法之單向環形鏈表(約瑟夫環、約瑟夫問題)

1. 什麼是單向環形鏈表:單向鏈表的尾節點的next指針指向鏈表頭節點 2. 爲什麼要有這個數據結構:我目前理解的是可以解決約瑟夫問題 3. 怎麼解決約瑟夫問題: 約瑟夫問題(變種,本質不變): 設編號爲1到n的人圍坐一圈, 編號爲k(1

原创 數據結構與算法之環形隊列(以int數組爲例,不包含擴容)

廢話補不多說了, 環形隊列最難理解的部分就是取模部分, 可以先看一下這個鏈接的大佬的講解: https://juejin.im/post/5c95d2515188252dab3ebfc5 如果上面這個鏈接的內容看懂了, 那本章的內容就不

原创 數據結構與算法之雙向鏈表(增刪改查、有序增、正向遍歷、反向遍歷)

雙向鏈表 1.什麼是雙向鏈表: 每個節點都有前一個節點的位置和後一個節點的位置 2.爲什麼要用雙向鏈表: 和單向鏈表比, 雙向鏈表可以正反向的遍歷, 而且可以自我刪除節點. 單鏈表只能單向遍歷, 並且在刪除節點時需要找到待刪除節點的前一

原创 數據結構與算法之稀疏數組(棋盤的保存和續局)

稀疏數組: Int[][] sparseArray = new Int[原始數組有效值+1][3] // 行 列 值 // 源數組總行數