LeetCode 二分查詢篇(69 33 704)

2022-09-13 15:33:12 字數 1797 閱讀 1152

實現 int sqrt(int x) 函式。

計算並返回 x 的平方根,其中 x 是非負整數。

由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。

示例 1:

輸入: 4

輸出: 2

示例 2:

輸入: 8

輸出: 2

說明: 8 的平方根是 2.82842...,

由於返回型別是整數,小數部分將被捨去。

//時間複雜度o(logn)

class solution else if (mid*mid == x)else

}return right;

}}

class solution 

}

class solution 

return (int)a;

}}

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。

( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。

搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。

你可以假設陣列中不存在重複的元素。

你的演算法時間複雜度必須是 o(log n) 級別。

示例 1:

輸入: nums = [4,5,6,7,0,1,2], target = 0

輸出: 4

示例 2:

輸入: nums = [4,5,6,7,0,1,2], target = 3

輸出: -1

class solution else 

}return -1;

}}

class solution else if(target > nums[mid] && target <= nums[right]) else 

}return -1;

}}

給定乙個 n 個元素有序的(公升序)整型陣列 nums 和乙個目標值 target ,寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

示例 1:

輸入: nums = [-1,0,3,5,9,12], target = 9

輸出: 4

解釋: 9 出現在 nums 中並且下標為 4

示例 2:

輸入: nums = [-1,0,3,5,9,12], target = 2

輸出: -1

解釋: 2 不存在 nums 中因此返回 -1

你可以假設 nums 中的所有元素是不重複的。

n 將在 [1, 10000]之間。

nums 的每個元素都將在 [-9999, 9999]之間。

class solution else if (nums[mid] < target)else if (nums[mid] > target)

}return nums[l] == target ? : -1;

}}//細節一

// while迴圈 表示搜尋區間

//使用 <= 表示[left,right],結束時區間為[right+1,right] 區間為空,全部遍歷到了

//使用 < 表示[left,right),結束區間為[left,left)區間還有乙個數,且right可能為-1,需要加補丁 nums[left] == target ? left : -1;

//細節二

//特殊情況越界問題

二分查詢篇

小鈴鐺 2019.10.14 如果沒有eclipse,讓你手寫呢!這種方法用的是遞迴實現 第一種方法 public class binarysearch int middle low high 2 if arr middle key else if arr middle arr high low h...

LeetCode 查詢 二分查詢

給定乙個 n 個元素有序的 公升序 整型陣列 nums 和乙個目標值 target 寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 1。示例 輸入 nums 1,0,3,5,9,12 target 9 輸出 4 解釋 9 出現在 nums 中並且下標為 4 輸入 nu...

leetcode 二分查詢

leetcode 29 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。演算法設計 用2進製的左移操作,每次對被除數左移1位,比較除數與被除數左移的後的大小關係,並在結果中加上左移...