X、數據結構與演算法部分——分支
數據結構與演算法-分支
(解釋下分支的目的吧,不然可能會大家看不明白:編程語言,演算法和數據結構我覺得都需要依託於具體的題目來練習,甚至微軟谷歌百度等在筆試和面試非常看重「刷題」,所以放出來個分支,大家可以跟著我一起搞。我負責找牛逼公司的簡單題,然後時間久了再開始放難一點的。題解的博客也是我之前打比賽時用的,在知乎或者csdn都能提問,我也是剛做所以講起來比較熟悉。一點基礎都沒有的就一行一行看我代碼,然後慢慢大約摸就看懂了)
- 概念
- 用處
- 具體內容
1. 概念
數據結構是放數據的,便於使用(操作數據或者存儲調用方面),平時就用簡單的int,double變數啥的就好,但是多了就用數組方便 ,再多了數組不好記用類封裝起來有了含義,但是添加刪除多了數組太慢,就用到set,map等等,又想描述數據之間複雜的關係就有了樹和圖。這是計算機領域的智慧之一,解決問題首先想想描述數據怎麼描述。
演算法就是解決一些問題的過程,其實就是很多經典問題的經典解決辦法,並且可以拼湊起來解決一切問題( ̄▽ ̄)吧。並且這些演算法中會用到數據結構(比如圖,樹,好的樹),所以熟練掌握演算法就跟背完了高考的例題一樣,非常重要。這個智慧之二hhhhhh。
2. 用處
本質的用處在概念中已經說了,實際上,這兩個的用處主要還真是思維上的。在平時工作時候使用的(1)是封裝好的數據結構,不用實現(2)經常會在網上參考別人,不用自己琢磨演算法。但是這樣說就明白它的用處了:(1)要分析透封裝好的數據結構,知道特點,分析空間,時間複雜度,以及常數時間複雜度好不好啥的(2)大致知道一個問題可能有幾個解決的辦法,這樣才能在網上搜(3)明確明白什麼問題可解,什麼問題解不出來,或者我把條件限制成什麼樣就可以簡單的求解。這都是需要熟練掌握基本的演算法的前提下才可以的。當然還有個用處,就是筆試,面試演算法題,這個是我寫這部分的主要目的和方式。當然演算法題=基礎演算法+數據結構+題意理解+腦筋急轉彎。
3. 具體內容
核心是以題目為主線,c++和python的代碼形式都有可能,題目主要是Google,微軟,百度的編程題,當然入門的話會比較麻煩,所以我剛開始會挑簡單的做,基本不用演算法或者數據結構的。具體為:我每天會放題目(如果沒放說明划水了。。請見諒。。可能我和煜哥打球去了!),基本就是一道,然後給題解,題解會有標籤和我的代碼,然後不會的話搜標籤,看代碼自己琢磨~
day1(2017-9-9)
微軟實習生演算法第二場(我也不知道難度,應該比較簡單)第一題:hihoCoder
題解:微軟2017年預科生計劃在線編程筆試第二場-#1497 : Queen Attack
day2(2017-9-10)
微軟實習生演算法第二場第二題:hihoCoder
題解:微軟2017年預科生計劃在線編程筆試第二場-#1498 : Diligent Robots
day3(2017-9-11)
微軟實習生演算法第二場第三題:hihoCoder
題解:微軟2017年預科生計劃在線編程筆試第二場-#1499 : A Box of Coins
day4(2017-9-12)
微軟實習生演算法第二場第四題:hihoCoder
註:讀懂題意需要一丟丟數據結構中「樹」的定義的理解,但是不影響做題
題解:微軟2017年預科生計劃在線編程筆試第二場-#1500 : EL SUENO
day5(2017-9-13)
微軟2017年預科生計劃在線編程筆試第一題:hihoCoder
題解:微軟2017年預科生計劃在線編程筆試-#1489 : Legendary Items
day6(2017-9-14)
微軟2017年預科生計劃在線編程筆試第二題:hihoCoder
註:讀懂題意需要一丟丟數據結構中「樹」的定義的理解,而且這個題的題意還是比較繞的,最好跟著樣例手畫一畫理解題意
題解:微軟2017年預科生計劃在線編程筆試-#1490 : Tree Restoration
day7(2017-9-15)
北大2017演算法課第一次作業:http://algorithm.openjudge.cn/algorithma/E/
註:作為理解樹的基本的題目吧
題解:北大演算法分析和複雜性理論-2017演算法課第一次作業E:二叉樹的操作 - CSDN博客
day8(2017-9-16)
微軟2017年預科生計劃在線編程筆試第三題:hihoCoder
題解:微軟2017年預科生計劃在線編程筆試-#1491 : Monster Killing
day9(2017-9-17)
微軟2017年預科生計劃在線編程筆試第四題:hihoCoder
題解:微軟2017年預科生計劃在線編程筆試-#1492 : Parentheses Sequence
day10(2017-9-18)
2017微軟秋季校園招聘在線編程筆試第一題:hihoCoder
題解:2017微軟秋季校園招聘在線編程筆試-#1399 : Shortening Sequence
day11(2017-9-19)
2017微軟秋季校園招聘在線編程筆試第二題:hihoCoder
題解:2017微軟秋季校園招聘在線編程筆試-#1400 : Composition
day12(2017-9-20)
字元串基本演算法題:Problem - 3294
注:不是具體的筆試題,但是聽到師兄討論可能面試筆試會有相關的,臨時放一道基礎的
題解:hdu3294-Girls research
day13(2017-9-21)
k-d樹的經典題目:Problem - 4347
題解:hdu4347-The Closest M Points
day14(2017-9-22)
2017微軟秋季校園招聘在線編程筆試第三題:hihoCoder
題解:2017微軟秋季校園招聘在線編程筆試-#1401 : Registration Day
day15(2017-9-23)
2017微軟秋季校園招聘在線編程筆試第四題:hihoCoder
題解:2017微軟秋季校園招聘在線編程筆試-#1402 : MS Recognition
day16(2017-9-24)
leetcode:Median of Two Sorted Arrays
題解:leetcode-4. Median of Two Sorted Arrays
day17(2017-9-25)
2016微軟探星夏令營在線技術筆試第一題:hihoCoder
題目:2016微軟探星夏令營在線技術筆試-#1341 : Constraint Checker
day18(2017-9-26)
2016微軟探星夏令營在線技術筆試第二題:hihoCoder
題解:2016微軟探星夏令營在線技術筆試-#1342 : Full Binary Tree Picture
day18(2017-9-27)
2016微軟探星夏令營在線技術筆試第三題:hihoCoder
day19(2017-9-28)
POJ:3177 -- Redundant Paths
day20(2017-9-29)
HDU:Problem - 5739
推薦閱讀:
※JDK源碼DualPivotQuicksort類中利用移位求除7近似值?
※用Python刷面試演算法題(如leetcode)是怎樣的體驗?
※如何計算std::vector的push_back方法插入一個對象的平均時間(要寫出計算式)?
※如何證明Manacher演算法的時間複雜度是O(n)?
※動態圖演算法將來是否會出現的oi競賽中?
TAG:算法与数据结构 |