原创 算法:反轉鏈表

     劍指 Offer 24. 反轉鏈表     定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表並輸出反轉後鏈表的頭節點。        示例:     輸入: 1->2->3->4->5->NULL     輸出: 5->4->3-

原创 算法:堆棧

上一篇聊數據結構中最基礎的「 數組 」和「 鏈表 」,今天咱們再來繼續看看「 堆棧 」吧。 一、「 堆棧 」是什麼? 堆棧(stack)是一種先進後出的、操作受限的線性表,也可以直接稱爲 棧。 可以把棧想象成一個桶一樣,往這個桶裏面一層

原创 算法:時間複雜度與空間複雜度

算法(Algorithm)是指用來操作數據、解決程序問題的一組方法。對於同一個問題,使用不同的算法,也許最終得到的結果是一樣的,但在過程中消耗的資源和時間卻會有很大的區別。 那麼我們應該如何去衡量不同算法之間的優劣呢? 主要還是從算法所佔

原创 算法:劍指Offer-面試題59 - II. 隊列的最大值

面試題59 - II. 隊列的最大值 難度中等 請定義一個隊列並實現函數 max_value 得到隊列裏的最大值,要求函數max_value、push_back 和 pop_front的均攤時間複雜度都是O(1)。 若隊列爲空,pop_f

原创 算法:數組與鏈表

數據結構是我們軟件開發中最基礎的部分了,它體現着我們編程的內功。大多數人在正兒八經學習數據結構的時候估計是在大學計算機課上,而在實際項目開發中,反而感覺到用得不多。 其實也不是真的用得少,只不過我們在使用的時候被很多高級語言和框架組件封裝

原创 算法:隊列

算法的系列文章中,之前咱們已經聊過了「 數組和鏈表 」、「 堆棧 」,今天咱們再來繼續看看「 隊列 」這種數據結構。「 隊列 」和「 堆棧 」比較類似,都屬於線性表數據結構,並且都在操作上受到一定規則約束,都是非常常用的數據類型,咱們掌握

原创 編程方式:遞歸

「 遞歸 」並不是一種數據結構,它是很多算法都使用的一種編程方法。它太普遍了,並且用它來解決問題非常的優雅,但它又不是那麼容易弄懂,所以我特意用一篇文章來介紹它。 一、「 遞歸 」是什麼?遞歸 就是指函數直接或間接的調用自己,遞歸是基於棧

原创 Scanner()類的使用

Scanner()類: 作用:起一個數據傳遞的作用,不用Scanner()時,數據需要在代碼中輸入(感覺跟靜態的方式一樣,數據值已經定義好了);使用了Scanner(),可以在控制檯中輸入數據(感覺變成了動態的方式)。 具體用法:Scan