704. 二分查找 C++

server/2024/12/4 4:38:44/

文章目录

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


一、题目链接

链接: 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.ppmy.cn/server/147196.html

相关文章

PHM技术:一维信号时序全特征分析(统计域/频域/时域)| 信号处理

目录 0 引言 1 基于统计域的时序特征分析 2 基于谱域的时序特征分析 3 基于时域的时序特征分析 4 代码分析 5 小结 0 引言 我们将探索时序特征分析&#xff0c;这是信号处理中的关键技术之一。信号在我们的日常生活中无处不在&#xff0c;从声音到图像&#xff0c;从传感…

网络性能四大关键指标:带宽、时延、抖动和丢包率

网络性能的四大关键指标包括带宽、时延、抖动和丢包率。这些指标对于评估和优化网络的性能至关重要。 一、带宽&#xff08;Bandwidth&#xff09; 定义&#xff1a;带宽是指网络中数据传输的最大能力&#xff0c;通常以比特每秒&#xff08;bps&#xff09;表示。它表示在单…

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…

2024年通信网络与软件工程国际学术会议(ICCNSE 2024)

2024年通信网络与软件工程国际学术会议&#xff08;ICCNSE 2024&#xff09; 2024 International Conference on Communication Networks and Software Engineering 2024年12月26日-28日 沈阳理工大学 【重要信息】 论文提交截止日期&#xff1a;2024年12月20日 会议报名截…

jmeter学习(7)命令行控制

jmeter -n -t E:\IOT\test2.jmx -l E:\IOT\output\output.jtl -j E:\IOT\output\jmeter.log -e -o E:\IOT\output\report IOT下创建output 文件夹&#xff0c;jmx文件名避免中文&#xff0c;再次执行output.jtl不能有数据要删除

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1&#xff0c;可以用数组存放&#xff0c;如果有雷就用1表示&#xff0c;没雷就用0表示。 2&#xff0c;排查(2,5)这个坐标时&#xff0c;我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

网络安全从入门到精通 (第二章-4) 后端基础PHP—简介及基本函数-上

1&#xff0c;什么是PHP&#xff1f; PHP&#xff08;超文本预处理器&#xff09;是一种通用开源语言&#xff0c;&#xff08;是动态语言中的一种&#xff0c;动态语言还有ASP&#xff0c;ASPX&#xff0c;JSP&#xff09;。 PHP语法吸收了C语言&#xff0c;JAVA 和Perl的特点…

MySQL 数据库学习教程二:深入 MySQL 数据库世界

在完成了 MySQL 数据库学习教程一的基础学习后&#xff0c;相信你已经对 MySQL 有了初步的认识和掌握。在本教程中&#xff0c;我们将进一步深入探索 MySQL 数据库&#xff0c;涵盖更高级的查询技巧、数据连接操作、索引优化以及数据完整性约束等重要内容&#xff0c;帮助你提升…