技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
我會持續分享下去,敬請您的關注。
LeetCode 704. 二分查找 (Binary Search)
問題描述:
給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target ,寫一個函數搜索 nums 中的 target,如果目標值存在返回下標,否則返回 -1。
示例:
C語言實現:
二分查找是一個十分常用的算法,其實在前面的題目中我們已經用過這種算法。
本來不打算解這道題,但是還是覺得勁量不要遺漏的好。
對於新手來說,要提醒一下,二分查找查找的前提是有序數列,所以要操作的數列是一個無序的,要先排序。
我曾經就碰到過一個面試的,上來就二分查找,根本沒有判斷數組是否有序。
二分查找的思路非常簡單,通常我們要定義兩個整形變量left和right,分別保存數組的起始下標和末尾下標。
然後通過判斷target與nums[(right+left)/2]的大小關係,來不斷調整left和right的值,以此來不斷的縮小查找的範圍,最後得到結果。
具體代碼如下:
Java語言的實現:
Java 的實現和C語言的實現基本一致,不再撰述。代碼如下:
python語言的實現:
python 的實現和C語言的實現基本一致,不再撰述。代碼如下:
相關推薦
'人工智能算法是如何從數據中學習規律的'
"⾸先我們來看⼀下最常⻅的⼈⼯智能算法是什麼樣的:⼈⼯智能算法包括⼏個部分: x是模型的輸⼊,y是模型的輸出,模型就是對輸⼊轉化為輸出的計算。⽐如輸⼊x可以是⼀張圖⽚(如 貓的照⽚),模型對圖⽚進⾏計算處理,然後輸出這張圖⽚上對應的物品的類別(貓)。 我們可以把算法理解成⼀...
'機器學習之誤差反向傳播算法'
"機器學習之誤差反向傳播算法 我們知道神經網絡是由大量的參數即權重構成,神經網絡的學習過程則是這些參數的變化更新過程。誤差反向傳播算法就是用於更新這些參數的。這裡我們假設激活函數為Sigmoid。Ps: 在吳恩達機器學習反向傳播算法課程中,而不是:這是因為吳恩達中使用的損失...
'LeetCode算法第72題:編輯距離'
"問題描述:給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少操作數 。你可以對一個單詞進行如下三種操作:插入一個字符刪除一個字符替換一個字符示例 1:輸入: word1 = "horse", word2 = "ros"輸出: ...
推薦中...