原创 跳臺階--劍指offer08(java實現)

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 解題思路 斐波那契數列的一個變型,列出前四種的可能次數,即可找到規律 源碼 public class

原创 用兩個棧實現隊列--劍指offer05(java實現)

題目描述 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。 解題思路 入隊列操作不變,出隊列操作由於是先進先出,故使用另一個棧將出棧元素保存在stack2中,取到最裏面的元素,再將stack1中

原创 反轉鏈表--劍指offer15(java實現)

題目描述 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 解題思路 設置結點p與res,p結點用於指向下一節點,head是移動結點,將head.next不斷指向前一個結點。並且p不斷向後移動,res爲記錄當前所在結點,最後得到res

原创 二進制中1的個數--劍指offer11(java實現)

題目描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 解題思路 首先判斷正數形式,若爲正數,則直接轉爲二進制,求1個數; 若爲負數。則先將負號去掉,立一個flag標誌,若flag爲1則將二進制數進行轉爲反碼,

原创 黑盒測試綜述

** 1 黑盒測試的定義 ** 黑盒測試又叫功能性測試,它是當今軟件測試常用也是重要的一種方法之一。黑盒測試顧名思義就是看不到程序的內部結構諸如代碼,函數,類等均無法看到。測試人員根據已有的程序需求文檔和程序需求規格說明書進行測試

原创 二維數組中的查找---劍指offer01(java實現)

題目描述 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 解題思路 兩個循環進行循環

原创 替換空格--劍指offer02(java實現)

題目描述 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 解題思路 循環遍歷,使用一個replaceAll函數 源碼

原创 數組中出現次數超過一半的數字--劍指offer(java實現)

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

原创 最小的k個數--劍指offer(java實現)

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路 將數組放入ArrayList中,採用內置的sort排序算法, 然後取出ArrayLis

原创 字符串的排列--劍指offer(java實現)

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

原创 整數中1出現的次數--劍指offer(java實現)

題目描述 求出113的整數中1出現的次數,並算出1001300的整數中1出現的次數?爲此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題

原创 把數組排成最小的數--劍指offer(java實現)

題目描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 解題思路 遞歸實現,將數組轉爲字符串數組,

原创 鏈表中的倒數第K個結點--劍指offer14(java實現)

題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 解題思路 首先循環遍歷得到鏈表的長度,再用總長度減去k,得到的數值就是所要返回的結點 源碼 /* public class ListNode { int val;

原创 從尾到頭打印鏈表--劍指offer03(java實現)

題目描述 輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。 解題思路 兩個ArrayList,將兩邊按順序加入到一個,再輸出到另一個,最後輸出即可 源碼 /** * public class ListNode

原创 矩形覆蓋--劍指offer10(java實現)

題目描述 我們可以用21的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 解題思路 同樣使用遞歸實現,只要找到前兩種的方法個數,即可設置跳出遞歸的條件,規律同斐波那契數