File tree Expand file tree Collapse file tree 2 files changed +22
-18
lines changed Expand file tree Collapse file tree 2 files changed +22
-18
lines changed Original file line number Diff line number Diff line change 1
1
# 57.1 和为 S 的两个数字
2
2
3
- [ NowCoder] ( https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tqId=11195&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github )
3
+ ## 题目链接
4
+
5
+ [ 牛客网] ( https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tqId=11195&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github )
4
6
5
7
## 题目描述
6
8
7
- 输入一个递增排序的数组和一个数字 S,在数组中查找两个数,使得他们的和正好是 S。如果有多对数字的和等于 S,输出两个数的乘积最小的。
9
+ 在有序数组中找出两个数,使得和为给定的数 S。如果有多对数字的和等于 S,输出两个数的乘积最小的。
8
10
9
11
## 解题思路
10
12
11
13
使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。
12
14
13
- - 如果两个指针指向元素的和 sum == target,那么得到要求的结果;
15
+ - 如果两个指针指向元素的和 sum == target,那么这两个元素即为所求。
14
16
- 如果 sum > target,移动较大的元素,使 sum 变小一些;
15
17
- 如果 sum < target,移动较小的元素,使 sum 变大一些。
16
18
17
19
``` java
18
- public ArrayList<Integer > FindNumbersWithSum(int [] array , int sum ) {
19
- int i = 0 , j = array . length - 1 ;
20
+ public ArrayList<Integer > FindNumbersWithSum(int [] nums , int target ) {
21
+ int i = 0 , j = nums . length - 1 ;
20
22
while (i < j) {
21
- int cur = array [i] + array[j];
22
- if (cur == sum )
23
- return new ArrayList<> (Arrays . asList(array [i], array [j]));
24
- if (cur < sum )
23
+ int cur = nums [i] + array[j];
24
+ if (cur == target )
25
+ return new ArrayList<> (Arrays . asList(nums [i], nums [j]));
26
+ if (cur < target )
25
27
i++ ;
26
28
else
27
29
j-- ;
Original file line number Diff line number Diff line change 1
1
# 57.1 和为 S 的两个数字
2
2
3
- [ NowCoder] ( https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tqId=11195&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github )
3
+ ## 题目链接
4
+
5
+ [ 牛客网] ( https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tqId=11195&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github )
4
6
5
7
## 题目描述
6
8
7
- 输入一个递增排序的数组和一个数字 S,在数组中查找两个数,使得他们的和正好是 S。如果有多对数字的和等于 S,输出两个数的乘积最小的。
9
+ 在有序数组中找出两个数,使得和为给定的数 S。如果有多对数字的和等于 S,输出两个数的乘积最小的。
8
10
9
11
## 解题思路
10
12
11
13
使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。
12
14
13
- - 如果两个指针指向元素的和 sum == target,那么得到要求的结果;
15
+ - 如果两个指针指向元素的和 sum == target,那么这两个元素即为所求。
14
16
- 如果 sum > target,移动较大的元素,使 sum 变小一些;
15
17
- 如果 sum < target,移动较小的元素,使 sum 变大一些。
16
18
17
19
``` java
18
- public ArrayList<Integer > FindNumbersWithSum(int [] array , int sum ) {
19
- int i = 0 , j = array . length - 1 ;
20
+ public ArrayList<Integer > FindNumbersWithSum(int [] nums , int target ) {
21
+ int i = 0 , j = nums . length - 1 ;
20
22
while (i < j) {
21
- int cur = array [i] + array[j];
22
- if (cur == sum )
23
- return new ArrayList<> (Arrays . asList(array [i], array [j]));
24
- if (cur < sum )
23
+ int cur = nums [i] + array[j];
24
+ if (cur == target )
25
+ return new ArrayList<> (Arrays . asList(nums [i], nums [j]));
26
+ if (cur < target )
25
27
i++ ;
26
28
else
27
29
j-- ;
You can’t perform that action at this time.
0 commit comments