原创 劍指offer 第三十二題 把數組排成最小的數字 java

題目: 思路: 就是簡單排序,不過排序的標準是自定義的              首先分析兩個數  32,321 這兩個數字合成32132,32321這兩個數字,明顯後者更大。這時候可以這樣分析,AB和BA的問題,AB和BA都是兩數合成

原创 劍指offer第二十五題 複雜鏈表的複製

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果爲複製後複雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空) 參考:htt

原创 劍指offer 第二十八題 數組中出現次數超過一半的數字

題目描述 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。 思路:    

原创 劍指Offer 第三十題 連續子數組的最大和

題目描述 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全爲正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期

原创 劍指offer 第二十九題 最小的k個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 第一種解法:                   暴利破解,直接Arrays.sort(),java自帶

原创 劍指offer第三十一題目 整數1出現的個數

題目: 解法: 第一種:直接從1到n唄,               每個數字,我們從個位,十位,到最高位分析,有多少個就加上;               然後從1遍歷到n,最後所有的加上,就是總數唄。               我

原创 劍指offer 第三十四題目 第一個只出現1次的數字 java

題目: 思路:          (1):轉char,然後排序,時間複雜度是nlogn          (2):字符串,全部是字母,那麼很簡單,就是簡單的桶排序問題,申請一個數組,然後記錄每個字母出現的次數,找到出現奇次數的字母,然後

原创 劍指offer第三十三題 醜數

題目: 思路:         我們都明白,是一個一個找,然後添加到數組中。那麼問題來了,如何精確的找到下一個?         答案是:a[n]從{a[0]到a[n-1]}*{2,3,5}中找到。         從a[0]到a[n-

原创 劍指offer 第二十六題 二叉搜索樹與雙向鏈表

題目描述 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。     參考:https://blog.csdn.net/qq_14842117/article/details

原创 劍指offer 第二十四題 二叉樹和爲某一值的路徑

題目描述 輸入一顆二叉樹的根節點和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,數組長度大的數組靠前)     借鑑: http

原创 劍指offer 第二十七題 字符串的排列

題目描述 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字符串,長度不超過9(可能有字

原创 劍指offer 第二十三題 二叉樹的後序遍歷序列

題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 思路:          一個數組,如果是二叉搜索樹的後序序列,那麼根節點就是數組的最後

原创 劍指offer 第二十題 包含min函數的棧 java

題目描述 定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。   思路:        除了正常的Stack之外,需要一個額外的排序數組(也可以是Stack) import java.

原创 劍指offer 第二十二題 從上往下打印二叉樹

題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。   思路:          這是一個典型的使用隊列的題目。在隊列頭拿出跟結點,然後在隊列尾放入根節點的左右子樹。這樣的順序正好 import java.util.Arr

原创 劍指offer 第二十一題 棧的壓入、彈出序列 java

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5