原创 嵌套數組實現迭代

1. 題目:給定一嵌套數組,如何實現迭代器的功能,即 hasNext 與 next java代碼如下: class MyIterable{ private int index; //用於指定當前元素的下標

原创 數據結構與算法系列 -- 兩個大數的相加 與相乘

1.  題目: 兩個大數(位數較大,現有的整形無法存儲)相加,比如:計算123456789987654321 與  987654321123456789 相加的和 Java代碼如下: public class BigData {

原创 數據結構與算法系列 -- 圖遍歷

1.  廣度優先搜索(BFS) 廣度優先搜索(Breadth-First-Search),簡稱爲 BFS。直觀地講,它其實就 是一種“地毯式”層層推進的搜索策略,即先查找離起始頂點最近的,然後是次近的,依次 往外搜索。   過程圖如下:

原创 數據結構與算法 --- 回溯算法

題目:八皇后問題 有一個 8x8 的棋盤,希望往裏放 8 個棋子(皇后),每個棋子所在的行、列、對角線,都不能有另一個棋子。找到所有滿足這種要求的放棋子方式 回溯的處理思想,有點類似枚舉搜索。我們枚舉所有的解,找到滿足期望的解。爲了有規律

原创 PHP導入其他php文件

php如何導入其他的php文件   引入方式(4種):include()   include_once()    require()    require_once() 引入寫法:     include("test.php"),  in

原创 數據結構與算法系列 -- 獲取最大(最小)的 top 元素

當我們面試的時候,常常會有面試官問我們,如何獲取批量數據中最大(最小)的 top n個元素, 答案是:選擇小頂堆(大頂堆)的數據結構來實現 下面以獲取最小的 top n元素爲例 public class HeapTest{ /

原创 數據結構與算法系列 -- 快速排序算法

        快排利用的也是分治思想。乍看起來,它有點像歸併排序,但是思路其實完全不一樣         快排的思想是這樣的:如果要排序數組中下標從 p 到 r 之間的一組數據,我們選擇 p 到 r 之間的任意一個數據作爲 pivot(

原创 數據結構與算法系列 -- 歸併排序

       歸併排序的核心思想還是蠻簡單的。如果要排序一個數組,我們先把數組從中間分成前後兩 部分,然後對前後兩部分分別排序,再將排好序的兩部分合併在一起,這樣整個數組就都有 序了。  如下圖,針對數組:11、   8、   3、  9

原创 數據結構與算法 -- 利用堆排序

建堆結束之後,數組中的數據已經是按照大頂堆的特性來組織的。數組中的第一個元素就是 堆頂,也就是最大的元素。我們把它跟最後一個元素交換,那最大元素就放到了下標爲 n 的位置。 然後再通過堆化的方法,將剩下的 n − 1 個元素重新構建成

原创 數據結構與算法系列 --- 冒泡、插入與選擇排序

1、冒泡排序算法 冒泡排序思想:         冒泡排序只會操作相鄰的兩個數據。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否 滿足大小關係要求。如果不滿足就讓它倆互換。一次冒泡會讓至少一個元素移動到它應該在 的位置,重複 n 次

原创 數據結構與算法系列 --- 棧在表達式求值中的應用

題目  利用計算機計算算數表達式,只包含加減乘除四則運算,比如:34+13*9+44- 12/3 思路:通過兩個棧來實現的。其中一個保存操作數的棧,另一個是保存運算符的棧。我們從左向右遍歷表達式,當遇到數字,我們就直接壓入操作數棧;當遇到

原创 數據結構與算法系列 -- 查找鏈表的中間節點

題目: 查找鏈表的中間節點  比如:有鏈表 1->3->5->8->9->10->12->11->17  ,其中間節點爲9 思路:定義兩個指針,分別爲slow與fast,同時從頭節點開始往尾節點移動,slow每次移動一個節點,fast每次

原创 數據結構與算法--判斷環存在與否

給一個單鏈表,判斷其中是否有環的存在 兩個思路:1、如果鏈表元素沒有重複的,則可以用一個set集合存放鏈表的value,查看是否有重複的 2、如果有重複的,可以設置兩個快慢指針fast、slow,若是fast能夠追上sl

原创 數據結構與算法系列----刪除鏈表倒數第 n 個結點

題目: 刪除鏈表倒數第 n 個結點 * 例子:刪除倒數第4個節點 1->3->5->8->9->10->12->11->17 * 結果爲:1->3->5->8->9->12->11->17 * 思路:先讓指向頭結點的指針 tmp 先

原创 數據結構與算法系列---判斷兩個無環鏈表是否相交

題目: 判斷兩個無環鏈表是否相交 public class LinkedList { public void print(LinkedNode<Integer> root){ LinkedNode<Integ