原创 編程之美讀書筆記:翻烙餅的問題

問題的描述:一摞大小無序的餅,允許單個或者多個一起直接的顛倒,求最優化的翻餅過程。 剛看到題目的時候,感覺比較的簡單,就想一個數組,加上for循環,再加上幾個條件判斷就好了。只是一個程序,絲毫沒有算法什麼的概念,或者說就是爲了解題而解題。

原创 單向鏈表倒數第K個節點

public class A13 { /** * 輸入一個單向鏈表,輸出該鏈表中倒數第k 個結點。 * 鏈表的倒數第0 個結點爲鏈表的尾指針。 * */ /** * @param args */ publ

原创 程序運行時,對象是怎麼進行放置的

1. 寄存器(register)。這是最快的存儲區,處理器內部。但是寄存器的數量極其有限,所以寄存器由編譯器根據需求進行分配。不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象。2. 堆棧(stack)。位於通用RAM(random-

原创 編程之美讀書筆記:翻烙餅想到的五大常用的算法

看到翻烙餅裏面應用的分支界限法,就想到了經典的五大常用的算法,前幾天工作的時候,還用到了多叉樹判斷是否含有圈圈的情況,好久確定寫出的算法能夠使用,今天就着重的複習一下,這五個常用的算法,也算爲下一個問題熱身:買書的問題,用到了貪心以及動態

原创 在一個字符串中找到第一個只出現一次的字符

public class A14 { /** * 在一個字符串中找到第一個只出現一次的字符 * 如輸入baccdeff,則輸出b。 * @param args */ public static void main(S

原创 代碼解釋:java反射調用的原理

//首先是反射的調用的方法 InvocationHandler test = new TestHander(new UserImpl()); User user = (User) Proxy.newProxyInstance(Use

原创 @@:垃圾回收機制詳細

寫在前面:說實話,真的受刺激了,那多的的錢,就沒有了。好好的學習,這個纔是硬道理。 This is a very personal and subjective opinion of mine, but I believe that a

原创 設計一個堆棧,函數min、push 以及pop 的時間複雜度都是O(1)

/** * 2.設計包含min 函數的棧。 * 定義棧的數據結構,要求添加一個min 函數,能夠得到棧的最小元素。 * 要求函數min、push 以及pop 的時間複雜度都是O(1)。 * * 經典的空間換取時間,這個

原创 二元查找樹轉雙向鏈表

public class A01 { /** * 輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只調整指針的指向。 * */ /** * @param args */ pu

原创 Java中的String對象是不可變的嗎

有個仁兄在 StackOverflow 上發起了一個問題,是這麼問的: 衆所周知Java中的String對象是不可變的,但我們來看下面這段代碼: String s1 = "Hello World"; String s2 = "H

原创 @@:java的io系統(二),代碼

寫在前面:精神豐富了,物質纔有豐富的可能。 有了第一篇的io系統的理論知識,加上這個代碼總結,結合起來,比較的好。 /** * @author zlz * */ public class IOUtil { // 緩存的大小 s

原创 路在何方

路在何方,路在腳下。

原创 @@:java的io系統(一)

寫在前面:當物質條件不行的時候,我們應該加強精神文明建設。 流分爲兩種類型,一種是字節流,一種是字符流。這個是比較重要的,開始的時候就是兩種類型,就分開了。然後就是一種一種的說,但是爲了有一個比較綜合的印象,我找了一張圖: 很清晰的看

原创 不同的數字組成的圓圈中刪除第m 個數字

public class A15 { /** *n 個數字(0,1,…,n-1)形成一個圓圈,從數字0 開始, *每次從這個圓圈中刪除第m 個數字 *(第一個爲當前數字本身,第二個爲當前數字的下一個數字)。

原创 有關String對象的一個面試題

一些比較核心的Java問題經常會用來考驗面試者的Java基本知識功底。這篇文章列出來了一些在我的書裏面沒有的面試題,通過這些面試題讀者也可以梳理一下Java基礎知識點。 Q1.下面的代碼片段會輸出什麼? String s = "