当前位置:网站首页>[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};
}
};
边栏推荐
猜你喜欢
Shell Sort
Unity get component
Unity find the coordinates of a point on the circle
Optimization scheme of win10 virtual machine cluster
Embedded database development programming (VI) -- C API
Simple modal box
TF-A中的工具介绍
Generate filled text and pictures
UE fantasy engine, project structure
Stm32cubemx (8): RTC and RTC wake-up interrupt
随机推荐
Cocos create Jiugongge pictures
Recherche de mots pour leetcode (solution rétrospective)
Unity check whether the two objects have obstacles by ray
Generate filled text and pictures
The difference between heap and stack
PR first time
2020-10-27
Quick sort summary
2022/7/2做题总结
cocos2dx_ Lua card flip
嵌入式数据库开发编程(五)——DQL
Download xftp7 and xshell7 (official website)
[转]: OSGI规范 深入浅出
Forecast report on research and investment prospects of Chinese wormwood industry (2022 Edition)
Unity shot tracking object
Unity connects to the database
UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存
嵌入式数据库开发编程(零)
Time format conversion
2020-10-27