原创 關於fork的初步理解

一、fork入門知識 fork()函數通過系統調用創建一個與原來進程幾乎完全相同的進程,這個新產生的進程稱爲子進程。一個進程調用fork()函數後,系統先給新的進程分配資源,例如存儲數據和代碼的空間。然後把原來的進程的所有值都複

原创 劍指offer 鏈表中環的入口節點

一個鏈表中包含環,請找出該鏈表的環的入口結點。 這個題目leetcode上做到過,當時的思路是先找到快慢指針的第一次交點。然後把其中一個指針放回頭部,兩者以相同速度前進,相遇點即是入口,這需要數學證明,不大容易想 該方法代碼如

原创 劍指offer 構建乘積數組

給定一個數組A[0,1,…,n-1],請構建一個數組B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。 這題我只只會暴力法,看了討論,有一種三角計算的方法

原创 劍指offer 醜數

把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 自己的方法超時了,看到了一段牛逼代碼 public

原创 劍指offer 最小的k個數

輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 當數據量很大的時候爲了節省空間,那就要使用堆排序 這裏我自己實現了堆的調整過程 public Array

原创 劍指offer 數組中只出現一次的數字

題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 這個題很好,以前只做過只有一個數字出現過1次的題目,當時直接異或出結果就可以了.這個題變成了兩個,想到了分組,但是想不好到底

原创 劍指offer 求1+2+3+...n

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 一下子還真沒想出來,看來解答說用遞歸和&&的短路特點,一下子就明白了 代碼超級簡單 pub

原创 劍指offer 把數組排成最小的數

輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 最先想到比較每一位的大小,由於最近看了基數排序,那就

原创 劍指offer 孩子們的遊戲(圓圈中最後剩下的數) ps:懷舊

題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作爲牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號爲0的小朋

原创 Ruby元編程 第三章 方法

動態方法 class MyClass def my_method(my_arg) my_arg * 2 end end obj = MyClass.new obj.send(:my_method, 3) #=> 6

原创 ruby元編程 第二章 對象模型

2.1 打開類 class D def x; 'x'; end end class D def y; 'y'; end end obj = D.new obj.x # => "x" obj.y # => "y" 當

原创 代碼整潔之道 第10章 類

1.類的組織 標準的java約定:類應該從一組變量列表開始。如果有公共靜態常量,應該先出現。然後是私有靜態變量,以及私有實體變量。很少會有公共變量。公共函數應跟在變量列表之後。 作者建議把由某個公共函數調用的私有工具函數緊隨在該公共函

原创 代碼整潔之道 第9章 單元測試

1.TDD三定律 定律一 在編寫能通過的單元測試前,不可編寫生產代碼 定律二 只可編寫剛好無法通過的單元測試,不能編譯也算不通過 定律三 只可編寫剛好足以通過當前失敗測試的生產代碼 這樣寫程序,我們每天就會編寫數十個測試,測試將覆蓋所

原创 代碼整潔之道 第8章 邊界

所謂的“邊界”是指外來代碼(三方程序包、開放源代碼、其他團隊打造的組件和子系統)和自己寫的代碼之間進行整合的連接區域 1.使用第三方代碼 以Map爲例 比如應用程序可能構造一個map對象並傳遞它。我們的初衷可能是map對象的所有接收者

原创 劍指offer 滑動窗口的最大值

題目描述 給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{4,4,6,6,6,5}; 針對數組{2,3,