在做题中学习(48):朴素的二分查找

devtools/2024/9/25 3:28:04/

. - 力扣(LeetCode)

解法一: 暴力求解

for循环中,从nums[0]枚举到nums[n-1],依次判断,返回 == target的值。

时间复杂度 : O(N)    :因为要遍历一遍数组

解法二:二分查找

因为此数组为有序的数组,所以可以每次取数组中心元素来比较,<target就往右移动,>target就往左移动,之后由新的left right更新mid,若mid所在位置的值 == target 则返回mid 下标

1.mid < target  left++

2.mid > target right--

3.mid == target return mid;

时间复杂度:O(logN)

细节问题:

1. 求中间元素

(left + right) /2    这种求法又可能会溢出(如果left + right足够大的话),因此建议用下面的求法:

left + (right - left) /2     又可能会见到 left + (right - left + 1) /2 

两种的区别是:当元素数量为偶数时,会指向不同的值。

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


http://www.ppmy.cn/devtools/27203.html

相关文章

使用C#与Unity实现Windows平台下的文件选择器

使用C#与Unity实现Windows平台下的视频文件选择器 在Unity开发过程中&#xff0c;我们有时需要允许用户从他们的系统中选择特定类型的文件&#xff0c;比如视频文件&#xff0c;以便进一步处理或显示。虽然Unity引擎提供了跨平台的解决方案&#xff0c;但在特定情况下&#xf…

蓝桥杯如何准备国赛?

目录 一、赛前准备 1、如何刷题&#xff0c;刷哪些题&#xff1f; 2、记录&#xff08;主要看个人习惯&#xff09; CSDN博客 写注释 3、暴力骗分 4、从出题人的角度出发&#xff0c;应该如何骗分 二、赛中注意事项 一、赛前准备 1、如何刷题&#xff0c;刷哪些题&…

IBM SPSS Statistics for Mac v27.0.1中文激活版:强大的数据分析工具

IBM SPSS Statistics for Mac是一款功能强大的数据分析工具&#xff0c;为Mac用户提供了高效、精准的数据分析体验。 IBM SPSS Statistics for Mac v27.0.1中文激活版下载 该软件拥有丰富的统计分析功能&#xff0c;无论是描述性统计、推论性统计&#xff0c;还是高级的多元统计…

Golang | Leetcode Golang题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; func generateMatrix(n int) [][]int {matrix : make([][]int, n)for i : range matrix {matrix[i] make([]int, n)}num : 1left, right, top, bottom : 0, n-1, 0, n-1for left < right && top < bottom {for column : lef…

java技术栈快速复习02_前端基础知识总结

前端基础 经典三件套&#xff1a; html&#xff08;盒子&#xff09;css&#xff08;样式&#xff09;JavaScript&#xff08;js&#xff1a;让盒子动起来&#xff09; html & css HTML全称&#xff1a;Hyper Text Markup Language(超文本标记语言)&#xff0c;不是编程语…

vue3——笔记2(计算属性,类与样式绑定)

计算属性 在 Vue3 中&#xff0c;计算属性的用法和 Vue2 基本上是一样的&#xff0c;但是在性能上有了一些改进。Vue3 中计算属性是通过computed函数来创建的&#xff0c;计算属性的值会在相关依赖发生改变时自动更新。与 Vue2 相比&#xff0c;Vue3 的计算属性在一些场景下会…

Qt相关开源项目总结

Qt官方github&#xff1a; https://github.com/orgs/qt/repositories 参考 https://blog.csdn.net/pzs0221/article/details/131337353

6.Vgg16--CNN经典网络模型详解(pytorch实现)

1.首先建立一个model.py文件&#xff0c;用来写神经网络&#xff0c;代码如下&#xff1a; import torch import torch.nn as nn class My_VGG16(nn.Module):def __init__(self,num_classes5,init_weightTrue):super(My_VGG16, self).__init__()# 特征提取层self.features nn…