《劍指offer》解題筆記,《劍指offer》解題

來源:互聯網
上載者:User

《劍指offer》解題筆記,《劍指offer》解題
《劍指offer》解題筆記

《劍指offer》共50題,這兩周使用C++花時間做了一遍,謹在此把一些很巧妙的方法、寫代碼遇到的痛點、易犯錯的細節等做一個簡單的標註,但不會太過詳細,具體演算法還是請參考書本。
做的比較急,代碼還有很多不完善的地方,如有錯誤,歡迎改正,地址為:github:sword_of_offer。可以使用git clone https://github.com/heLomaN/sword_of_offer.git命令擷取代碼。
其中,少數無法驗證正確與否的題目沒有寫代碼,部分二叉樹的題目寫了代碼,但由於產生二叉樹太過麻煩沒有驗證。

解題筆記Q3

聲明並初始化二維數組的語句如何寫?
cin如何判斷輸入結束?

Q4

字元數組的末尾位置計算差了1,忘了加上\0,要小心

Q5

遞迴的方法更簡潔

Q6

stl的find演算法
vector傳值效能差,應該用引用
截取一段時要根據左右子樹的長度來截,再次find是錯誤的

Q7

stack的pop返回值是void,而top方法才返回頂部值

Q8

這個二分相當的難。尤其是非遞迴的寫法
邊界值處理要仔細想
不能忽略如1 0 1的特殊情況

Q9

應該用long long類型

Q10

求數的二進位表示種1的個數應記住:減1再&自身總會消去一個1

Q11

除以2用>>,模2用&,效率更高
應該加上錯誤偵測

Q12

遇到數字有關的題,首先考慮是不是大數問題

Q13

把下一個節點的值拷貝到當前節點即可,之後刪除下一個節點

Q14

9du oj要求奇數或偶數的順序不變,現在的代碼沒有符合這個要求

Q15

node *p,q只把p聲明為指標,小心
參考https://github.com/julycoding/The-Art-Of-Programming-By-July,*應該靠近類型名

Q16

畫圖以協助理解

Q18

!p判斷指標為空白是可以的
代碼未測試

Q22

方法很難想起來,要仔細分析其中規律

Q25

代碼未測試

Q26

方法很難想起來 第三步分離鏈表操作不夠簡潔

Q27

使用了一個輔助vector,書上的方法不能仔細的寫出來

Q28

這種解法無法處理多個字元重複的情況,會造成重複
遞迴的時候修改全域數組,但遞迴調用後要把全域數組修改回來,和之前遞迴調用前後出入棧的方法有異曲同工之妙
8皇后問題也可以用這個方法解決

Q29

求數組中任意第K大的數字有成熟的O(n)的演算法

Q30

C++中throw new excetion("error")是不正確的,不能用字串初始化excetion
set和multiset是基於紅/黑樹狀結構實現的

Q31

第一種解法和DP解法原理是一樣的

Q32

1到n個9之間出現1的次數是n*10^(n-1)
代碼未測試

Q33

itoa不是標準庫函數,只是linux下的庫函數,可以用printf代替
string可以直接+、>、<運算

Q34

關鍵是如何保證已經找到的醜數數組是有序的

Q35

memset函數是在cstring標頭檔中

Q35

關鍵是merge兩個數組時的細節處理
歸併排序相當於O(n)的空間換來了時間複雜度提升到O(nlogn)

Q37

代碼未測試

Q38

關鍵是改變二分尋找的迴圈判斷條件

Q39

題目2的演算法不易想起
代碼未測試

Q40

方法很巧妙
C++中auto& e : v遍曆容器注意v指向元素的引用才可以改變容器中的值

Q41

書中未給出演算法證明,亟待解決

Q43

方法巧妙,解法很難想起來

Q45

方法巧妙,解法很難想起來

Q50

如果有指向父節點的指標,那麼找到這兩個點到根節點的鏈表,求第一個公用節點
如果沒有,那麼dfs遍曆得到這兩個點的鏈表,求第一個公用節點

  

轉載請註明作者:Focustc,部落格地址為http://blog.csdn.net/caozhk,原文連結為點擊開啟
對於《數學的領悟》的讀書筆記

讀書筆記:數學的領悟-羅增儒讀書筆記:數學的領悟-羅增儒一、摘要理解實質:學會,會學對於學生,不應只滿足於表面文字的學會,還要深入理解概念、原理、方法等的精神實質。這樣解à怎樣解 看透本質:我們做題,首先要找到答案,這是基本要求,但不是最終的目的。如果求出答案後不能把題目所隱含的數學內容的實質揭示出來,就等於在原有的思維水平上簡單重複、原地踏步而已。知其然,不知其所以然 最佳化素質:最佳化數學素質的主要途徑是注重知識的發生過程,如概念的形成過程,定理的發現過程,證明的尋求過程等。對於解題來說,進行解題過程的分析是最佳化素質的一條捷徑。居高臨下的回首,就為我們提供了指導性的經驗。學數學畢竟與學技藝不盡相同。一門技藝可以通過模仿與重複操練去掌握,而數學解題不是機械地重複數學基礎知識和數學基本方法,還要綜合而靈活地運用這些知識和方法,它在本質上是一種創造性的思維過程。後來,我們悟出了一個門路,那就是通過已知學未知,通過分析已經解決過的題來領悟解題的思想,通過解題思想來駕馭知識與方法。這個體會和方法,使我們擺脫了單純的模仿和在同一思維層次上的簡單重複,使得每一天的學習都能獲得解題能力或思維水平的一點提高。我們認為,為了提高數學能力,至少在還沒有找到更好的辦法之前,“分析已經解決的題”是一個普遍可行的好方法。 事實上,解題思路的獲得,包括下列“三位一體”的完整工作:1. 捕捉有用的資訊,符號資訊和形象資訊;2. 提取記憶,主要是相關的公式、定理、基本模式等解題依據;3. 將兩者有效組合,使之成為一個合乎邏輯的和諧結構。苦難就在於此步。 做題的作用:鞏固知識,加強記憶,加深理解的知識目的; 但更有提高能力,開發智力,訓練思維的能力目的。 解題的心理過程:知道的越多,不知道的也越多有用捕捉、有關提取、有效組合是心理活動的外在表現它恰好對應著人的複雜心理活動過程的三個環節:觀察實驗、聯想轉化、推理證明。 聯想轉化的樸素含義是,把待解決的或未解決的問題,歸結為一類已經解決的或者比較容易解決的問題。 愛因斯坦說過:你能觀察到眼前的什麼現象,不僅取決於你的肉眼,還取決於你運用什麼樣的思維,思維決定了你到底能觀察到什麼。例子,魯賓雙關圖形G.波利亞: 為初中生設計的: 設計出自己的解題表,以適應具體的學科和學習的不同階段 差異分析法:題目的條件與結論之間的差異成為目標差解題的實質就在於設計一個目標差不斷減少的過程通過不斷尋找目標差,不斷減少目標差而完成解題的思維方法,成為差異分析法從尋找目標差入手,未知是什嗎?已知是什嗎?兩者有什麼聯絡與區別? 特殊化:數學家認為,在討論數學問題時,特殊化比一般化起著更為重要的作用特殊化問題有可能更簡單、更容易,進而推廣之其功能在於:1解題的突破口,2尋找解題思路的策略,3完成解題過程的方法由一般退到特殊,由複雜退到簡單,由抽象退到具體,由整體退到部分,退到最原始而又不失去重要性的地方,退到你會做、能下手的問題上 數形結合:一柄雙刃的利劍數轉化為形,看透實質如果一個特定的問題被轉化為一個圖形,那麼思想就整體地把握了問題,並能創造性地思索問題的解法形轉化為數, 轉換思考的角度:順向推導有困難時就逆向反求,直接解決問題有困難就間接解決,正面證實困難就反面否定,探究可能性困難就探究不可能性,等式證明從左至右不順利就從右至左逆推法,反證法,舉反例,常量變數換位,公式定理的逆用分析法:由未知,找須知,靠攏已知反證法更適用於否定性問題、無限性命題、唯一性命題、......餘下全文>>
 
我是一個程式員,我明天要去面試了

1、二面是在首面的基礎上深入的詢問。比如你簡曆上的參加的活動、項目什麼的,問得會更深入;
2、問一些其他方面的問題,判斷你的價值觀和世界觀是否與公司相匹配;
3、其實也得看公司,有些公司分很多次面試,甚至八九面都可以能,所以內容也不盡相同。

總之,到時候隨機應變吧!祝你好運!
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.