實現 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位,比較除數與被除數左移的後的大小關係,並在結果中加上左移...