网站备案号查询网,网站推广找,金华专业网站建设公司,房子设计效果图大全文章目录 一、题目链接二、参考代码三、所思所悟 一、题目链接
链接: 704. 二分查找 二、参考代码
int search(const vectorint nums, int target) {int left 0; int right nums.size() - 1;//左闭右闭[]while (left right){int mid (left right) / 2;… 文章目录 一、题目链接二、参考代码三、所思所悟 一、题目链接
链接: 704. 二分查找 二、参考代码
int search(const vectorint 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 stringusing namespace std;int search(const vectorint 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() {vectorint 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;
}