原创 鏈表(拆分,反轉,合併)

題目描述   Given a singly linked list L: L 0→L 1→…→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→… You must do thi

原创 sort-list(歸併排序和插入排序使得鏈表有序)

題目描述 Sort a linked list in O(n log n) time using constant space complexity. 歸併排序算法:時間複雜度是O(logn),對於數組,空間複雜度是O(n),對於鏈表空間

原创 矩陣中的路徑(回溯法)

題目描述 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則之後不能再次進入這個格

原创 把二叉樹打印成多行(利用隊列的先進先出)

題目描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思考與上一道之字形打印二叉樹的區別  這個是每一行的方向一樣 先添加一層,然後把這層的節點從左到右的添加進去,只能用隊列,這樣下次添加的時候利用隊列的先進先出原則

原创 堆排序以及TopK問題

 堆排序 利用數組來實現堆,堆分爲小頂堆和大頂堆 小頂堆:父親節點的值小於左右孩子節點 大頂堆:父親節點的值大於左右孩子節點  如果是對數組從小到大排序 (1)爲數組構建一個初始大頂堆,則數組的第一個元素就是數組最大的元素 (2)循環N-

原创 序列化二叉樹(層次遍歷)

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹   import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; imp

原创 MyBatis(二)--原始開發DAO以及Mapper代理開發DAO

在前面的學習中,我們是SqlSessionFactoryBuilder創建SqlSeesionFactory,SqlSeesionFactory可以用單例模式的方法,每次操作只用創建一次工廠就可以了,那麼SqlSessionFactory

原创 二叉搜索樹的第k個結點(中序遍歷順序的第k個)

題目描述 給定一棵二叉搜索樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8)    中,按結點數值大小順序第三小結點的值爲4。 思路:遞歸求中序遍歷,然後序列的第k個就是要求的  /* public class Tre

原创 MyBatis(三)全局配置文件SqlMapConfig.xml的配置內容

properties屬性 這個前面使用jdbc的時候就使用過的db.properties文件,這個文件存儲的是鍵值對信息,那麼我們可以把數據庫的一些原始信息放到這個文件中,然後在sqlMapConfig.xml文件中通過取值來配置,這樣就

原创 按之字形順序打印二叉樹(用棧分奇偶行不同方向添加打印)

題目描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。   分層處理:利用兩個棧,一個棧存儲奇數層的節點,一個棧用來存儲偶數層的節點 當遍

原创 把字符串轉換成整數(char與int的轉換)

題目描述 將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字符串轉換整數的庫函數。 數值爲0或者字符串不是一個合法的數值則返回0。 輸入描述:

原创 二叉樹的下一個結點(根據中序遍歷的特點)

題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。  根據中序遍歷的特點: (1)如果當前節點有右孩子,那麼中序遍歷的時候,下一個節點就是右孩子

原创 對稱的二叉樹

題目描述 請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。 把一棵樹分成左後兩半,從上往下比較  class TreeNode { int val = 0;

原创 構建乘積數組

題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。  剛好分成兩部分求解

原创 刪除鏈表中重複的結點(遞歸)

題目描述 在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5 class ListNode { int v