当前位置: 首页 > news >正文

Leecode力扣704数组二分查找

题目链接为:https://leetcode.cn/problems/binary-search/

最终代码为:

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

  一开始自己写的🐕粑代码为:

class Solution{
public:int search(vector<int>& nums, int target){int begin=0;// int end=nums.end();//这个vector取最后一个值的写法自己不熟悉了int end=nums.size();//这个vector取最后一个值的写法自己不熟悉了int mid=(begin+end)/2;int value_mid=nums[mid];//python看多了,C++都忘记写;了while(1){if(target<value_mid){end=mid;mid=(begin+end)/2;}else if (target > value_mid){begin=mid;mid=(begin+end)/2;}else if (target == value_mid){return mid;}else{return -1;}}}
};

问题:

C老师的指点和思路:

您的思路是正确的,您正在使用二分搜索法来在有序数组中查找目标值。但是,您的代码有几个问题需要修复:

  1. 如果数组中没有找到目标值,while循环将无限循环下去。为了避免这种情况,我们可以将循环条件改为 begin <= end,这样当begin超过end时,循环会自动退出。
  2. 在int end = nums.size();这一行,您应该设置end为nums.size() - 1,因为nums.size()返回的是数组中的元素数量,而最后一个元素的索引是nums.size() - 1。
  3. 您只需要在循环内部一次计算mid和value_mid。因为这两个值在每次循环迭代时都会变化。
  4. target == value_mid的判断应该放在前面,因为它是一个直接的退出条件。
  5. 最后的else条件(即return -1)应该在while循环外部,因为如果while循环结束,那么就意味着没有找到目标值。

卡哥网站的知识点:

数组理论基础:代码随想录

数组是存放在连续内存空间上的相同类型数据的集合。

需要两点注意的是

  • 数组下标都是从0开始的。
  • 数组内存空间的地址是连续的

因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。

那么二维数组在内存的空间地址是连续的么?(确实是个好问题!!)

不同编程语言的内存管理是不一样的,以C++为例,在C++中二维数组是连续分布的。

http://www.lryc.cn/news/117925.html

相关文章:

  • Linux 的基本使用
  • vue3实现自定义select下拉框内容之城市区域篇
  • 性能测评:腾讯云轻量应用服务器_CPU内存带宽流量
  • python中的迭代器和生成器
  • Python-OpenCV中的图像处理-图像阀值
  • VB+SQL酒店客房管理设计与实现
  • 【Linux】从0到1实现一个进度条小程序
  • 江南大学轴承数据故障诊断(利用一维CNN进行故障诊断,代码和数据放在压缩包,无需修改任何东西,解压缩后直接运行,有详细注释)
  • 【网络基础实战之路】基于BGP协议连接三个AS区域的实战详解
  • 基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析
  • Day 26 C++ list容器(链表)
  • 【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)
  • Markdown语法和表情
  • CSDN编纂目录索引跳转设置
  • cpu的架构
  • FastAPI和Flask:构建RESTful API的比较分析
  • 用康虎云报表打印二维码
  • 网盘直链下载助手
  • 【EI复现】售电市场环境下电力用户选择售电公司行为研究(Matlab代码实现)
  • 并发——何谓悲观锁与乐观锁
  • 【C++】模板
  • 【Echart地图】jQuery+html5基于echarts.js中国地图点击弹出下级城市地图(附完整源码下载)
  • Python AI 绘画
  • mongodb:环境搭建
  • Grafana技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》
  • 【Github】Uptime Kuma:自托管监控工具的完美选择
  • linux环形缓冲区kfifo实践3:IO多路复用poll和select
  • SpringBoot系列---【使用jasypt把配置文件密码加密】
  • 大数计算(大数加法/大数乘法)
  • 【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio构建React完成点餐H5页面