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

704. 二分查找 C++

文章目录

  • 一、题目链接
  • 二、参考代码
  • 三、所思所悟


一、题目链接

链接: 704. 二分查找


二、参考代码

int search(const vector<int>& nums, int target) {int left = 0; int right = nums.size() - 1;//左闭右闭[]while (left <= right){int mid = (left + right) / 2;if (nums[mid] > target){right = mid - 1;}else if (nums[mid] < target){left = mid + 1;}else{return mid;}}return -1;//左闭右闭[)/*while (left < right){int mid = (left + right) / 2;if (nums[mid] > target){right = mid;}else if (nums[mid] < target){left = mid + 1;}else{return mid;}}return -1;*/
}

三、所思所悟

cin、cin.getline() 和 getline() 是 C++ 标准库中用于从标准输入(通常是键盘)读取数据的三种不同方式。它们的主要区别如下:

cin:
cin 是一个 istream 对象,用于从标准输入流读取数据。
当使用 cin 读取数据时,它会在遇到空白(如空格、制表符或换行符)时停止读取。
cin 通常用于读取单个数据项,如 int、float、double 等。

cin.getline():
cin.getline()实际上有三个参数,第三个通常省略cin.getline(接收字符串的变量,接收字符个数,结束字符)
cin.getline() 是 cin 的成员函数,用于从标准输入流读取一行数据,直到遇到换行符。
它会读取换行符之前的整行数据,包括空格,并将其存储在提供的字符数组中。
cin.getline() 通常用于读取字符串,但它不是用来读取单个数据项的好选择,因为它会将整行数据作为一个字符串读取。

getline():
getline() 是一个全局函数,用于从 istream 对象(如 cin)读取一行数据,直到遇到换行符。
它会读取换行符之前的整行数据,包括空格,并将其存储在提供的 string 对象中。
getline() 是读取一行数据的标准方式,特别是当你需要处理包含空格的字符串时。

在此题如果不知道输入的长度,但是要全部且最后一个为搜索值的时候可以这样输入

#include <iostream>
#include <vector>
#include <sstream>
#include <string>using namespace std;int search(const vector<int>& nums, int target) {int left = 0; int right = nums.size() - 1;//左闭右闭[]while (left <= right){int mid = (left + right) / 2;if (nums[mid] > target){right = mid - 1;}else if (nums[mid] < target){left = mid + 1;}else{return mid;}}return -1;//左闭右闭[)/*while (left < right){int mid = (left + right) / 2;if (nums[mid] > target){right = mid;}else if (nums[mid] < target){left = mid + 1;}else{return mid;}}return -1;*/
}int main() {vector<int> nums;string data; getline(cin, data);istringstream iss(data);int num;while (iss >> num) {nums.push_back(num);}int target = -1;if (!nums.empty()) {target = nums.back();nums.pop_back(); }cout << search(nums, target);return 0;
}
http://www.lryc.cn/news/496287.html

相关文章:

  • SpringCloud Seata集成分布式事务管理 事务保护 XA AT两种模式的区别
  • node.js基础学习-querystring模块-查询字符串处理(三)
  • 电子电气架构 --- 车载网关GW连接外部IP Tester
  • 鸿蒙LiteOS的核心架构
  • C语言——实现计算房屋总价
  • 【380】基于springboot的闲置图书分享
  • element-ui的下拉框报错:Cannot read properties of null (reading ‘disabled‘)
  • VMware虚拟机——安装保姆级教程(附安装包)
  • 如何实现表格选中时禁用树结构的复选框功能(El-Tree 与 El-Table 联动实现)
  • STM32CUBEIDE FreeRTOS操作教程(十):interrupt on/off中断开关
  • Linux的基本操作及虚拟机设置
  • oracle 用户手册
  • Flutter-Web打包后上线白屏
  • 解决linux访问huggingface的问题(操作记录)
  • Android Studio 右侧Gradle窗口只有test的task问题解决
  • Spring AOP 的实现和切点表达式的介绍
  • 【赛博保安】安全日记之常用术语(一)
  • C++ 中的 string 类:全面解析与应用实践(上)
  • 量化交易系统开发-实时行情自动化交易-8.7.文华平台
  • 美畅物联丨如何通过 FFmpeg 解码视频
  • 机器学习任务功略
  • Web Worker 和 WebSocket的区别
  • JMeter实时性能压测可视化系统整合
  • 无限加载和懒加载及路由滚动及路由滚动不生效
  • CSS底层基础:小白速来
  • 【MySQL 进阶之路】索引概述
  • 【C++boost::asio网络编程】有关异步读写api的笔记
  • Elasticsearch 的存储与查询
  • 008静态路由-特定主机路由
  • SystemUI 下拉框 Build 版本信息去掉