程式設計師該怎麼做,才能成為coding王者?
每當做程式設計題目時,大多數人都會靠基本的直覺,遵循一些固定的步驟來有效地解題。不管是有意還是無意,在做程式設計題目的時你會下意識地遵循一些步驟,在閱讀完這篇文章後你就可以將這些步驟和這篇文章聯絡起來,從而就可以更高效地解題。因此在這篇文章中,我將討論解程式設計題的五個步驟。
作者 | Madhav Bahl
譯者 | 彎月
責編 | 屠敏
出品 | CSDN(ID:CSDNNews)
這個世界需要的是開發者,我為什麼要在程式設計競賽上花時間呢?
我自己就是開發,但我發現大多數開發者(包括許多“非常”有能力的開發者)並不是太擅長做資料結構、演算法以及一些通用的問題。很可悲的是,許多人只不過是通過遵循一些基本的步驟來開發應用程式,或者做一些非常簡單的軟體,然後稱自己為“程式設計師”。
這個時代人人都能程式設計,所以深入學習資料結構和演算法不再是當今學生們的第一選擇,即使是那些本應非常重視這些領域的學生。
即使是我,作為一個開發者,也沒有參加過太多程式設計競賽,但我還是會盡量在演算法和資料結構上多花些時間,學習如何編寫高效的程式碼,並鼓勵和推薦所有人都關注這個方面。
下面是一些例子,表明資料結構、演算法和程式設計競賽(一般意義上的)的內容能幫助學生們:
選擇好的大學
編寫高質量的程式碼
編寫高效率的程式碼(時間和空間複雜度)
最優地使用資源
邏輯推理
知名度(程式設計競賽的學生可以接觸到巨大的社群)
機遇(大量的程式設計競賽)
程式設計的過程有無限的樂趣
“程式設計教你怎樣面對大問題。”——Jack Dorsey
現在進入正題。
做程式設計題時的五個步驟
幾天前在做一道程式設計題時,我發現我在解題時都會遵循一個固定的模式。我又做了幾道題,並寫下了解題前後我腦海中的步驟。很驚訝的是我發現竟然真的有規律可循,我甚至都不知道我用了五個步驟,但有了這五個步驟,我就能更高效地解題了。
正如我前面說過的,很可能你也會下意識地使用這些步驟,但如果你進行總結,並意識地使用後,就會發現驚人的區別。
1.理解並分析問題
閱讀題目,開始思考題目,可能的話在紙上寫下給出的條件和你需要找出的條件。
問自己幾個問題:
能完全理解題目嗎?
能給非專業人士解釋清楚問題嗎?
需要多少輸入,每個輸入都是什麼?
每個輸入帶來的輸出是什麼?
能從題目中分解出幾個模組嗎?
是否擁有足夠的資訊?如果沒有,試著再理解一遍題目。
2.仔細閱讀示例輸入
仔細閱讀示例輸入,試著想出更多的示例輸入,這樣能幫你更好地理解題目,而且,這樣能讓你想清楚你的程式碼需要處理多少種情況,可能的輸出或輸出範圍是什麼。
這裡我建議:
選擇非常簡單的輸入並找出輸出
選擇更復雜、更大的輸入,看看輸出是什麼,需要多少種用例
然後開始處理邊界條件:
不提供任何輸入,輸出應該是什麼
提供非法輸入,輸出應該是什麼
3.分解題目
對於大型問題來說這一步非常非常有幫助。這種情況下我建議遵循以下步驟:
試著手繪一份流程圖或 UML
將問題分解成模組,或子問題
試著為每個子問題建立獨立的功能
按順序或按需要呼叫子問題(很可能一個函式會呼叫另一個函式),將它們連線起來
如果是真實世界的問題(如管理系統等),試著用類和物件來實現
4.開始解題和寫程式碼
現在題目已經分析完,可以真正編寫程式碼了。如果不能一次性解完,那麼可以先給一個簡單的部分寫程式碼,隨著解決問題的深入,你會逐步發現更多細節,從而找出更多的思路。
只需要記住這三點,就一定能找到解法:
你的起點
你的位置
你的目標
而且,如果你是在面試中,不要浪費時間去解決整個題目再告訴面試官,應該不斷簡化問題,不斷告訴面試官你解決問題的方法。
告訴面試官你從哪裡入手
告訴他你在思考什麼方法
找出你在問題中面臨的最難的部分
有時可以忽略“最難”的部分,從簡單的子問題入手,這樣能給你帶來更多的時間去思考前者
解決完簡單的子問題後,試著用類似的方式解決困難的部分
解題時可能會想出更好的方法,要告訴面試官
5.回顧並學習
這部分是最重要的!解題完成後,一定要回顧下:程式碼能否改進?有沒有另一種解題的方法?
不要做完就放棄了!這樣等於放棄你找出其他解法的可能性,也放棄了完整地探索問題的機會!
下面是在寫完程式碼之後應該問自己的問題:
這段程式碼是否能處理任何輸入(包括邊界情況)?
有沒有其他方法解決問題?
程式碼是否有效?能否更有效?
程式碼是否可讀?
如果別人給你這段程式碼,你能否理解?
效能能否提高?
能否利用其他演算法達到更好的結果?
除了這些問題之外,還要檢查同一題目其他人的解答,看看別人是怎樣完成的,這個過程中你會學到很多。
總結
本文討論了以下五個步驟:
分析並理解問題
仔細閱讀示例輸入和用例
將問題分解成子問題,或函式,或模組
開始解題和程式設計
解題完成後,回顧程式碼是否可以改進,是否有其他解題方法
以上,希望這篇文章可以提高你的解題技巧。
原文:
https://hackernoon.com/how-to-approach-any-coding-problem-9230f3ad6f9
本文為 CSDN 翻譯,如需轉載,請註明來源出處。
推薦閱讀:
點選“閱讀原文”,開啟CSDN APP 閱讀更貼心!
相關文章
- 你該怎麼做才能成為應屆程式設計師中的「佼佼者」?程式設計師
- 老碼農致IT小白:你該怎麼做,才能成為應屆程式設計師中的【佼佼者】?程式設計師
- 程式設計師35歲不焦慮,該怎麼做?程式設計師
- 程式設計師怎麼高效做筆記程式設計師筆記
- 程式設計師該怎麼“討好”上級程式設計師
- 選擇了UI如何做職業規劃?怎麼做才能成為月薪過萬的UI設計師?UI
- 在國企做程式設計師怎麼樣?程式設計師
- 程式設計師壓力那麼大,為什麼還要選擇做程式設計師程式設計師
- 為什麼說程式設計師做外包沒前途?程式設計師
- 為什麼程式設計師做外包會被瞧不起?程式設計師
- 育碧設計師:“開放世界”遊戲到底應該怎麼做?遊戲
- 程式設計師天天 CURD,怎麼才能成長,職業發展的思考 ?程式設計師
- 程式設計師只能吃青春飯?程式設計師該怎麼規劃自己的未來程式設計師
- 程式設計師天天 CURD,怎麼才能成長,職業發展的思考(2)程式設計師
- 誰該為程式設計師加班“買單”程式設計師
- 為什麼大部分 PHP 程式設計師做不了架構師?PHP程式設計師架構
- 為什麼要選擇做一名程式設計師?程式設計師
- 普通程式設計師該如何成為全棧工程師程式設計師全棧工程師
- 技術管理進階——誰能成為Leader,大Leader該做什麼
- 程式設計師面試過程中,該怎麼判斷該公司好壞?程式設計師面試
- 程式設計之旅,我該怎麼走?程式設計
- Java程式設計師培訓機構該怎麼去選擇Java程式設計師
- Java程式設計師職業發展應該怎麼規劃Java程式設計師
- 女程式設計師,為什麼比男程式設計師少???程式設計師
- [譯]作為程式設計師你不能成功的 10 個跡象程式設計師
- 每一個程式設計師,都希望能成為分散式系統架構師程式設計師分散式架構
- 程式設計師工資高,但為什麼越來越多的人都不再願意做程式設計師呢?程式設計師
- 程式設計師職場遇到這樣的事該怎麼辦呢?程式設計師
- 小程式的ui應該怎麼設計?UI
- 程式設計師何苦為難程式設計師?程式設計師
- java培訓分享:Java程式設計師職業規劃怎麼做Java程式設計師
- 遊戲設計的作品集到底該怎麼做?遊戲設計
- 學了很久設計,什麼時候能成合格的設計師?
- 程式設計師,為什麼如此迷茫?程式設計師
- 為什麼程式設計師應該有一臺 Mac 個人電腦程式設計師Mac
- 為什麼程式設計師應該有一臺Mac個人電腦程式設計師Mac
- AI工程師缺口嚴重,身為程式設計師的你怎麼看?AI工程師程式設計師
- 程式設計師應該怎樣和領導相處?程式設計師