滕州市东方建设工程事务有限公司网站,凡科互动答题辅助,郴州红网,全能优化型网站网址#xff1a; LeetCode 704.二分查找
算法模拟#xff1a; Algorithm Visualizer
在线工具#xff1a; C 在线工具
如果习惯性使用Visual Studio Code进行编译运行#xff0c;需要C11特性的支持#xff0c;可参考博客#xff1a;
VisualStudio Code 支持C11插件配…网址 LeetCode 704.二分查找
算法模拟 Algorithm Visualizer
在线工具 C 在线工具
如果习惯性使用Visual Studio Code进行编译运行需要C11特性的支持可参考博客
VisualStudio Code 支持C11插件配置 问题 给定一个 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]之间。 思路 二分查找的特点是
必须为有序数组 通常是升序排列通过查找区间索引的中间比对进行快速定位。
时间复杂度 O(log n)
C 代码相关
class Solution {
public:int search(vectorint nums, int target) {// 获取左右边界索引int left 0;int right nums.size() - 1;while (left right) {// 获取中间索引怎家left的原因是避免越界int middle left ((right - left)/2);// 中间值与目标值进行对比然后偏移索引if (nums[middle] target) {right middle - 1;} else if (nums[middle] target) {left middle 1;} else {return middle;}}return -1;}
};更多学习内容参考: 代码随想录 感谢作者的分享!