成都建设规划网站,百度推广怎么做效果好,如何布局网站,网站安全事件应急处置机制建设目录
二分查找算法原理
力扣704. 二分查找
解析代码 二分查找算法原理 二分查找一种效率较高的查找方法。已经有严谨的数学证明其时间复杂度是O#xff08;logN#xff09;#xff0c;如果在全国14亿人口中找一个人#xff0c;那么只需查找31次#xff0c;但是#xf…目录
二分查找算法原理
力扣704. 二分查找
解析代码 二分查找算法原理 二分查找一种效率较高的查找方法。已经有严谨的数学证明其时间复杂度是OlogN如果在全国14亿人口中找一个人那么只需查找31次但是二分查找要求线性表必须采用顺序存储结构而且表中元素按关键字有序排列无序有时也行但是要有二段性。一般步骤如下 首先假设表中元素是按升序排列将表中间位置记录的关键字与查找关键字比较如果两者相等则查找成功否则利用中间位置记录将表分成前、后两个子表如果中间位置记录的关键字大于查找关键字则进一步查找前一子表否则进一步查找后一子表。重复以上过程直到找到满足条件的记录使查找成功或直到子表不存在为止此时查找不成功。
以前学C/C也写过二分查找的代码直接刷题
力扣704. 二分查找
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) {}
}; 解析代码
首先是有序的就知道用二分了简单题重拳出击
class Solution {
public:int search(vectorint nums, int target) {int left 0, right nums.size() - 1;while(left right){int mid left (right - left) / 2;if(nums[mid] target){right mid - 1;}else if(nums[mid] target){left mid 1;}else{return mid;}}return -1;}
};