当前位置: 首页 > 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;
}

相关文章:

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;…...

SpringCloud Seata集成分布式事务管理 事务保护 XA AT两种模式的区别

介绍 阿里巴巴的 Seata&#xff08;Service Aligned Transaction Alternative&#xff09;是一个开源的分布式事务解决方案&#xff0c;旨在解决微服务架构中跨服务、跨数据库的事务一致性问题。它可以帮助开发者管理分布式系统中的全局事务&#xff0c;确保在多个服务之间的事…...

node.js基础学习-querystring模块-查询字符串处理(三)

一、前言 querystring是 Node.js 中的一个内置模块&#xff0c;主要用于处理 URL 查询字符串。它提供了一些实用的方法来解析和格式化查询字符串&#xff0c;使得在处理 HTTP 请求中的查询参数等场景时非常方便。 还可以防止sql注入 二、解析查询字符串&#xff08;parse方法&a…...

电子电气架构 --- 车载网关GW连接外部IP Tester

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...

鸿蒙LiteOS的核心架构

鸿蒙LiteOS是华为公司推出的一款面向物联网领域的轻量级操作系统&#xff0c;它专为资源受限设备设计&#xff0c;旨在满足智能穿戴设备、智能家居、智能出行等领域的应用需求。鸿蒙LiteOS不仅能够支持多种硬件平台&#xff0c;还具备超低功耗、快速启动、高安全性等特性&#…...

C语言——实现计算房屋总价

//功能&#xff1a;计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05% //功能&#xff1a;计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05%#include<stdio.h>void main()…...

【380】基于springboot的闲置图书分享

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…...

element-ui的下拉框报错:Cannot read properties of null (reading ‘disabled‘)

在使用element下拉框时&#xff0c;下拉框option必须点击输入框才关闭&#xff0c;点击其他地方报错&#xff1a;Cannot read properties of null (reading disabled) 造成报错原因&#xff1a;项目中使用了el-dropdown组件&#xff0c;但是在el-dropdown里面没有定义el-dropdo…...

VMware虚拟机——安装保姆级教程(附安装包)

一、下载 1、官方正版VMware下载链接&#xff1a;https://pan.quark.cn/s/c9ff7c6e06d7 2、Linux镜像下载&#xff08;CentOS7&#xff09;链接&#xff1a;https://pan.quark.cn/s/4df5f93fb83d 二、安装VMware 1、创建VMware所需文件夹 &#xff08;1&#xff09;找一个…...

如何实现表格选中时禁用树结构的复选框功能(El-Tree 与 El-Table 联动实现)

在前端开发中&#xff0c;树形结构和表格是常用的组件组合&#xff0c;尤其是在展示和管理复杂数据时。使用 Element UI 的 el-tree 和 el-table 组件&#xff0c;我们可以实现当表格中有选中行时&#xff0c;自动禁用树结构中的复选框&#xff0c;反之亦然。这不仅提升了用户体…...

STM32CUBEIDE FreeRTOS操作教程(十):interrupt on/off中断开关

STM32CUBEIDE FreeRTOS操作教程&#xff08;十&#xff09;&#xff1a;interrupt on/off中断开关 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发…...

Linux的基本操作及虚拟机设置

文章目录 Linux的目录结构Linux中的常见目录 VI和VIM编辑器什么是VI和VIM编辑器VIM的一般模式VIM的编辑模式VIM的命令模式模式间的切换 虚拟机网络配置查看网络信息修改网络配置信息查看和修改主机名服务管理类命令 虚拟机管理操作VMware为虚拟机拍摄快照VMware为虚拟机执行克隆…...

oracle 用户手册

Oracle用户手册 一、Oracle数据库概述 定义与用途 Oracle数据库是一款功能强大的关系型数据库管理系统(RDBMS)。它用于存储和管理大量的结构化数据,广泛应用于企业级应用、金融系统、电商平台等各种需要高效数据处理和存储的场景。例如,银行使用Oracle数据库来存储客户账户…...

Flutter-Web打包后上线白屏

问题描述 Flutter上线后进行测试发现界面白屏&#xff0c;打开开发者模式查看网络发现加载main.js文件404 问题原因 我上线的地址是https://xxx:8091/homedots,但是我打包后的index文件中的baseUrl是"/",将地址改成”/homedots/"&#xff0c;注意homedots后面…...

解决linux访问huggingface的问题(操作记录)

目录 一、clash软件&#xff08;linux&#xff09;的下载 二、clash软件&#xff08;linux&#xff09;的使用 三、linux命令行访问huggingface 1、问题分析 2、设置命令行代理 四、补充&#xff08;windows的linux虚拟机&#xff09; 五、参考链接 一、clash软件&#…...

Android Studio 右侧Gradle窗口只有test的task问题解决

目录 运行环境问题现象解决方案1、打开Settings设置界面2、设置选项3、重启Android Studio4、重新Sync工程 运行环境 Android Studio Giraffe | 2022.3.1 Patch 3 Android SDK 33 Gradle 8.0.1 JDK 17 问题现象 Android Studio右侧Gradle窗口下只有test的task&#xff0c;其他…...

Spring AOP 的实现和切点表达式的介绍

1. 快速入手 AOP&#xff1a;就是面相切面编程&#xff0c;切面指的就是某一类特定的问题&#xff0c;也可以理解为面相特定方法编程&#xff0c;例如之前使用的拦截器&#xff0c;就是 AOP 思想的一种应用&#xff0c;统一数据返回格式和统一异常处理也是 AOP 思想的实现方式…...

【赛博保安】安全日记之常用术语(一)

"企业的信息安全治理水平&#xff0c;直接取决于安全团队人员的技术专业度&#xff0c;而非运营经验值。所谓的技术&#xff0c;并非指渗透和挖洞的能力&#xff0c;而是指软件开发、IT 架构、网络拓扑相关的知识和经验。 站在乙方的角度来看&#xff0c;技术薄弱的安全人…...

C++ 中的 string 类:全面解析与应用实践(上)

&#x1f916;&#x1f31f; 欢迎降临张有志的未来科技实验室&#x1f916;&#x1f31f; 专栏&#xff1a;C &#x1f468;‍&#x1f4bb;&#x1f469;‍&#x1f4bb; 先赞后看&#xff0c;已成习惯&#x1f468;‍&#x1f4bb;&#x1f469;‍&#x1f4bb;…...

量化交易系统开发-实时行情自动化交易-8.7.文华平台

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来会对于文华平台介绍。 文华财经…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...