BM17. 二分查找-I
描述
示例1
输入:
[-1,0,3,4,6,10,13,14],13
输出:
6
说明:
13 出现在nums中并且下标为 6示例2
输入:
[],3
输出:
-1
说明:
nums为空,返回-1示例3
输入:
[-1,0,3,4,6,10,13,14],2
输出:
-1
说明:
2 不存在nums中因此返回 -1C++ 解法, 执行用时: 26ms, 内存消耗: 7904KB, 提交时间: 2022-05-14
static const auto io_sync_off = []() { // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); return nullptr; }(); //上面一坨看看有什么用 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { int size=nums.size(); if(size==0){ return -1; } int start=0,end=size-1,mid; while(start<=end){ mid=(start+end)/2; if(nums[mid]==target){ return mid; } if(nums[mid]>target){ //大了,往小的去 end=mid-1; }else{ start=mid+1; } } return -1; } };
Rust 解法, 执行用时: 27ms, 内存消耗: 6408KB, 提交时间: 2022-03-31
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param target int整型 * @return int整型 */ pub fn search(&self, nums: Vec<i32>, target: i32) -> i32 { if nums.len() == 0 { return -1; } let mut l=0; let mut r=nums.len() -1; while l<= r && l>=0 && r>=0{ let mid=l+(r-l)/2; if mid > nums.len(){ break; } if nums[mid] == target { return mid as i32; }else if nums[mid]<target{ l=mid+1; }else{ r=mid-1; } } -1 } }
C++ 解法, 执行用时: 27ms, 内存消耗: 7948KB, 提交时间: 2022-05-09
static const auto io_sync_off = []() { // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); return nullptr; }(); //上面一坨看看有什么用 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { int size=nums.size(); if(size==0){ return -1; } int start=0,end=size-1,mid; while(start<=end){ mid=(start+end)/2; if(nums[mid]==target){ return mid; } if(nums[mid]>target){ //大了,往小的去 end=mid-1; }else{ start=mid+1; } } return -1; } };
C++ 解法, 执行用时: 32ms, 内存消耗: 7884KB, 提交时间: 2022-06-12
static const auto io_sync_off = []() { // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { int size = nums.size(); if(size == 0) return -1; //if(size == 1) return nums[0] == target ? 0 : -1; //if(target > nums[size-1] || target < nums[0]) return -1; int L = 0, R = size - 1, Mid; while(L <= R) { Mid = (L + R) / 2; if(nums[Mid] == target) return Mid; else if(nums[Mid] > target) R = Mid - 1; else L = Mid + 1; } return -1; } };
C++ 解法, 执行用时: 33ms, 内存消耗: 7852KB, 提交时间: 2022-05-08
static const auto io_sync_off = [](){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); return nullptr; }(); class Solution { public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size() - 1; while (l <= r) { int mid = (l + r) / 2; if (nums[mid] == target) return mid; else if (nums[mid] < target) l = mid + 1; else r = mid - 1; } return -1; } };