国家网站集约化建设试点方案,pc访问手机网站跳转,wordpress怎么念,建立无上气运皇朝704.二分查找#xff08;力扣LeetCode#xff09;
给定一个 n 个元素有序的#xff08;升序#xff09;整型数组 nums 和一个目标值 target #xff0c;写一个函数搜索 nums 中的 target#xff0c;如果目标值存在返回下标#xff0c;否则返回 -1。 示例 1: 输入: nums…704.二分查找力扣LeetCode
给定一个 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 {
public:int search(vectorint nums, int target) {// 初始化左右指针int l 0, r nums.size() - 1;// 当左指针小于右指针时执行循环while (l r){// 计算中间索引这里使用位运算来求平均值int mid l r 1;// 如果中间的数大于等于目标值则目标值在左半边更新右指针if (nums[mid] target) r mid;// 如果中间的数小于目标值则目标值在右半边更新左指针else l mid 1;}// 循环结束后左指针会指向目标值或者是第一个大于目标值的元素// 检查左指针是否指向目标值if (nums[l] target) return l;// 如果不是则表示数组中没有目标值返回-1else return -1;}
};