原创 04.排序算法

時間複雜度爲O(n^2) 1.冒泡排序 public void sort(int[] array) { for (int i = 0; i < array.length - 1; i++) {

原创 04-02.棧的逆序

題目 實現一個棧的逆序,但是隻能用遞歸函數和這個棧本身的操作來實現,而不能自己申請另外的數據結構 代碼 public class ReverseStack { public int get(Stack<Integer>

原创 jdk源碼解析(一)---java.long.object

jdk源碼解析(一)—java.long.object 我們都知道java中的類都繼承自Object類,我們今天就要來探討下Object類的一些特性,首先我們來看下Object裏面有哪些方法 hashCode() equals(

原创 05-01.K 個一組翻轉鏈表

題目 給你一個鏈表,每 k 個節點一組進行翻轉,請你返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。 如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。 示例: 給你這個鏈表:1-

原创 16.刪除無序單鏈表中值重複出現的節點

【題目】 給定一個無序單鏈表的頭節點head,刪除其中值重複出現的節點。 【代碼1】 時間複雜度O(n),空間複雜度O(n在這裏插入代碼片) class Solution { public ListNode deleteD

原创 04-04.滑動窗口最大值

題目 給定一個數組 nums,有一個大小爲 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。 代碼 class Solution { public in

原创 04-01.最小棧

題目 設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) -- 將元素 x 推入棧中。 pop() -- 刪除棧頂的元素。 top() -- 獲取棧頂元素。 getMin() --

原创 06-01.尋找旋轉排序數組中的最小值

題目 假設按照升序排序的數組在預先未知的某個點上進行了旋轉。 ( 例如,數組 [0,1,2,4,5,6,7] 可能變爲 [4,5,6,7,0,1,2] )。 請找出其中最小的元素。 你可以假設數組中不存在重複元素。 示例1

原创 17.在單鏈表中刪除指定值的節點

【題目】 給定一個鏈表的頭節點head和一個整數num,請實現函數將值爲num的節點全部刪除 【代碼1】 時間複雜度O(n),空間複雜度O(n) class Solution { public ListNode delet

原创 04-03.棧的逆序

題目 一個棧中的元素爲整型,現在想將改棧從頂到低按從大到小的順序排序,只能申請一個棧。除此之外,可以申請新的變量,但不能申請額外的數據結構,如何完成排序 代碼 public static void sortStack(S

原创 15.複製含有隨機指針的鏈表

【題目】 給定一個鏈表,每個節點包含一個額外增加的隨機指針,該指針可以指向鏈表中的任意節點或空節點。要求返回這個鏈表的深拷貝 【代碼1】 時間複製度O(n),空間複製度O(n) class Solution { publi

原创 13.將單向鏈表按某值化分爲左邊小,中間相等,右邊大的形式

【題目】 給定一個單向鏈表的頭節點head,節點的值類型是整形,在給定一個整數pivot。實現一個調整鏈表的函數,將鏈表調整爲左部分都是值小於pivot的節點,中間部分都是值等於pivot的節點,右部分都是值大於pivot的節點。

原创 14.兩個單鏈表相加

【題目】 給定兩個用鏈表表示的整數,每個節點包含一個數位。 例如:鏈表1爲9-> 3 -> 7,鏈表2爲6 -> 3,最後生成的結果爲1 -> 0 -> 0 -> 0。 【代碼1】 時間複雜度O(n),空間複雜度O(n)

原创 11.用一個棧實現另一個棧的排序

【題目】 一個棧中的元素的類型爲整形,現在想將該棧從頂到底按從小到大的順序排序,只許申請一個棧。除此之外,可以申請新的變量,但是不能申請額外的數據結構,如何完成排序。 【代碼】 private void sortStack

原创 09.用兩個棧實現隊列

題目 用兩個棧實現一個隊列,隊列的聲明如下,請實現它的兩個函數appendTail 和deleteHead,分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。 (若隊列中沒有元素,deleteHead返回-1)。