原创 劍指Offer----反轉鏈表
輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。 /* public class ListNode { int val; ListNode next = null; ListNode(int val) {
原创 劍指Offer----順時針打印矩陣
輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,15,14,13,9,5
原创 劍指Offer----棧的壓入、彈出序列
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可
原创 劍指Offer----包含min函數的棧
定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。 import java.util.Stack; public class Solution { Stack<Integer> data = new Stack<In
原创 劍指Offer----跳臺階
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路:1.斐波那契數列 public class Solution { public int JumpFloor(int target
原创 劍指Offer----旋轉數組的最小數字
把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOT
原创 劍指Offer----二叉搜索樹的後序遍歷序列
輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No假設輸入的數組的任意兩個數字都互不相同。 import java.util.Arrays; public class Solution {
原创 劍指Offer----鏈表中倒數第k個節點
輸入一個鏈表,輸出該鏈表中倒數第k個結點。方法一: /* public class ListNode { int val; ListNode next = null; ListNode(int val) {
原创 劍指Offer----二叉樹的鏡像
操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null
原创 劍指Offer----合併兩個排序的鏈表
輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 /* public class ListNode { int val; ListNode next = null; L
原创 劍指Offer----重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。
原创 劍指Offer----二進制中1的個數
輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 錯誤解法: public class Solution { public int NumberOf1(int n) { int num=0;