小白兔打怪升级之路-1

it2023-10-24  74

TO167. 两数之和 II - 输入有序数组C

最近在刷力扣的题目,现在目前还是一个小白,该博客只是小白记录自己成长过程的心路历程,也算是自己的一个笔记本,我的博客可能一点也帮助不了你,你可以不在我的博客上面浪费时间,如果你想看那就看下去吧。

题目描述

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。

说明:

返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例:

输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

来源:力扣(LeetCode) 链接:原题在这

一.解题方法:

暴力求解:遍历数组中的所有数据直到找到 index1 , index2,结果是超时。学习力扣给出的算法 算法的基本描述

下面是代码片段:

class Solution { public: vector<int> twoSum(vector<int>& numbers, int target) { int left=0,right=numbers.size()-1; while(left<right) { if(numbers[left]+numbers[right]>target) { right=right-1; } else if(numbers[left]+numbers[right]<target) { left=left+1; }else { return {left+1,right+1}; } } return{-1,-1};//因为 vector<int> twoSum返回值不为空 } };

二、本次练习中学会的知识点

vector -基本用法 #include < vector> using namespace std; 创建一个向量容器 Vector<类型>标识符 vector<int>obj; 一些函数 标识符.size() obj.size();//obj中元素的个数
最新回复(0)