原创 複雜鏈表的複製(三步法:複製、賦值、拆鏈)

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針random指向一個隨機節點),請對此鏈表進行深拷貝,並返回拷貝後的頭結點。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序

原创 調整數組順序使奇數位於偶數前面(簡單操作)

輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 public class Solution { pu

原创 鏈表中倒數第k個結點(快慢指針)

題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 /* public class ListNode { int val; ListNode next = null; ListNode(int val

原创 棧的壓入、彈出序列(按照彈出序列模擬棧的彈出)

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

原创 數組中重複的數字(HashMap/桶計數)

題目描述 在一個長度爲n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。 例如,如果輸入長度爲7的數組{2,3,1,0,2,

原创 連續子數組的最大和(簡單dp,在線算法)

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

原创 字符流中第一個不重複的字符(HashMap/桶計數)

題目描述 請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次的字符是"l"。 輸出描

原创 樹的子結構(遞歸判定)

題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) /** public class TreeNode { int val = 0; TreeNode left =

原创 撲克牌順子(判定模擬)

題目描述 LL今天心情特別好,因爲他去買了一副撲克牌,發現裏面居然有2個大王,2個小王(一副牌原本是54張_)…他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!“紅心A,黑桃

原创 二叉樹的深度(dfs)

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 /** public class TreeNode { int val = 0;

原创 和爲S的兩個數字(雙指針)

題目描述 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 import java.util.

原创 從上往下打印二叉樹(層序遍歷,一維的輸出)

題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。 import java.util.*; /** public class TreeNode { int val = 0; TreeNode lef

原创 序列化二叉樹(先序遍歷序列化,遞歸反序列化)

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式保存爲字符串,從而使得內存中建立起來的二叉樹可以持久保存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方

原创 二叉樹的鏡像(遞歸操作)

題目描述 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode ri

原创 矩形覆蓋(思維,斐波那契數列)

題目描述 我們可以用21的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 比如n=3時,2*3的矩形塊有3種覆蓋方法: public class Solution {