当前位置:网站首页>[sum of two numbers] 169 sum of two numbers II - enter an ordered array
[sum of two numbers] 169 sum of two numbers II - enter an ordered array
2022-07-05 05:16:00 【lee2813】
One 、 subject
I'll give you a subscript from 1 The starting array of integers numbers , The array has been pressed Non decreasing order , Please find out from the array that the sum satisfying the addition is equal to the target number target Two numbers of . Let these two numbers be numbers[index1] and numbers[index2] , be 1 <= index1 < index2 <= numbers.length .
In length 2 Array of integers for [index1, index2] Returns the subscript of these two integers in the form of index1 and index2.
You can assume that each input Only corresponding to the only answer , And you Can not be Reuse the same elements .
The solution you design must use only constant level extra space .
Example 1:
Input :numbers = [2,7,11,15], target = 9
Output :[1,2]
explain :2 And 7 The sum is equal to the number of targets 9 . therefore index1 = 1, index2 = 2 . return [1, 2] .
Example 2:
Input :numbers = [2,3,4], target = 6
Output :[1,3]
explain :2 And 4 The sum is equal to the number of targets 6 . therefore index1 = 1, index2 = 3 . return [1, 3] .
Example 3:
Input :numbers = [-1,0], target = -1
Output :[1,2]
explain :-1 And 0 The sum is equal to the number of targets -1 . therefore index1 = 1, index2 = 2 . return [1, 2] .
Two 、 Answer key
This problem is to traverse an array , And find two elements , It's not an interval , And the array is ordered , Therefore, the double pointer method can be used .
- First initialize the double pointer , Point to the smallest position and the largest position respectively , The minimum position pointer traverses to the right , The maximum position pointer traverses to the left .
- In the process of traversing , There are three situations (1) Sum of two numbers > The goal is : The maximum position pointer moves to the left ;2) Sum of two numbers < The goal is : The minimum position pointer moves to the right ;3) Sum of two numbers = The goal is : Successfully found
Be careful : In the opposite direction, pay attention to the boundary conditions , Here are two pointers pointing to the same position
3、 ... and 、 Code
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int s = 0;
int f = numbers.size()-1;
while(s!=f){
if((numbers[s] + numbers[f])==target) break;
else if((numbers[s] + numbers[f])>target) f--;
else s++;
}
return vector<int> {
s+1,f+1};
}
};
边栏推荐
- FVP和Juno平台的Memory Layout介绍
- Judge the position of the monster in the role under unity3d
- JVM call not used once in ten years
- [leetcode] integer inversion [7]
- Collapse of adjacent vertical outer margins
- 54. Spiral matrix & 59 Spiral matrix II ●●
- 使用Room数据库报警告: Schema export directory is not provided to the annotation processor so we cannot expor
- cocos_ Lua listview loads too much data
- Use the command character to close the keyboard command of the notebook
- Quick sort summary
猜你喜欢
随机推荐
2022/7/1 learning summary
Stm32cubemx (8): RTC and RTC wake-up interrupt
2022上半年全国教师资格证下
Research on the value of background repeat of background tiling
When will Wei Lai, who has been watched by public opinion, start to "build high-rise buildings" again?
Unity find the coordinates of a point on the circle
Bubble sort summary
How much do you know about 3DMAX rendering skills and HDRI light sources? Dry goods sharing
[转]: OSGI规范 深入浅出
2020-10-27
Solon 框架如何方便获取每个请求的响应时间?
Pause and resume of cocos2dx Lua scenario
PMP考生,请查收7月PMP考试注意事项
Chinese notes of unit particle system particle effect
cocos2dx_ Lua card flip
Use of snippets in vscode (code template)
《动手学深度学习》学习笔记
服务熔断 Hystrix
UE4/UE5 虚幻引擎,材质篇(三),不同距离的材质优化
[trans]: spécification osgi








