leetcode-704.二分查找

leetcode-704.二分查找

文章目录

  • leetcode-704.二分查找
    • 一.题目描述
    • 二.第1次代码提交(非二分查找)
    • 三.第2次代码提交(非二分查找,std::find和std::distance)
    • 四.第3次代码提交(二分查找,左右指针)
    • 五.关于C++中int型的奇数除以2

一.题目描述

leetcode-704.二分查找_第1张图片

二.第1次代码提交(非二分查找)

class Solution {
  public:
    int search(vector<int> &nums, int target) {
        int i = 0;
        while (i < nums.size() && nums[i] != target) {
            i++;
        }
        if (i == nums.size()) {
            return -1;
        } else {
            return i;
        }
    }
};

三.第2次代码提交(非二分查找,std::find和std::distance)

class Solution {
  public:
    int search(vector<int> &nums, int target) {
        auto it = std::find(nums.begin(), nums.end(), target);
        if (it != nums.end()) {
            return std::distance(nums.begin(), it);
        } else {
            return -1;
        }
    }
};

四.第3次代码提交(二分查找,左右指针)

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;

            if (nums[mid] == target) {
                return mid;
            } else if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }

        return -1;
    }
};

五.关于C++中int型的奇数除以2

leetcode-704.二分查找_第2张图片

你可能感兴趣的:(数据结构和算法,leetcode,算法)