LeetCode基礎算法題第120篇:二分查找算法

LeetCode基礎算法題第120篇:二分查找算法

技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。

如果有任何問題可以在文章後評論或者私信給我。

我會持續分享下去,敬請您的關注。

LeetCode 704. 二分查找 (Binary Search)

問題描述:

給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target ,寫一個函數搜索 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

示例:

LeetCode基礎算法題第120篇:二分查找算法

C語言實現:

二分查找是一個十分常用的算法,其實在前面的題目中我們已經用過這種算法。

本來不打算解這道題,但是還是覺得勁量不要遺漏的好。

對於新手來說,要提醒一下,二分查找查找的前提是有序數列,所以要操作的數列是一個無序的,要先排序。

我曾經就碰到過一個面試的,上來就二分查找,根本沒有判斷數組是否有序。

二分查找的思路非常簡單,通常我們要定義兩個整形變量left和right,分別保存數組的起始下標和末尾下標。

然後通過判斷target與nums[(right+left)/2]的大小關係,來不斷調整left和right的值,以此來不斷的縮小查找的範圍,最後得到結果。

LeetCode基礎算法題第120篇:二分查找算法

具體代碼如下:

LeetCode基礎算法題第120篇:二分查找算法

LeetCode基礎算法題第120篇:二分查找算法

Java語言的實現:

Java 的實現和C語言的實現基本一致,不再撰述。代碼如下:

LeetCode基礎算法題第120篇:二分查找算法

LeetCode基礎算法題第120篇:二分查找算法

python語言的實現:

python 的實現和C語言的實現基本一致,不再撰述。代碼如下:

LeetCode基礎算法題第120篇:二分查找算法

LeetCode基礎算法題第120篇:二分查找算法

相關推薦

推薦中...