[LeetCode]剑指 Offer 57. 和为s的两个数字
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 57. 和为s的两个数字相关的知识,希望对你有一定的参考价值。
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[2,7] 或者 [7,2]
示例 2:
输入:nums = [10,26,30,31,47,60], target = 40
输出:[10,30] 或者 [30,10]
限制:
- 1 <= nums.length <= 105
- 1 <= nums[i] <= 106
题解:
/**
* 剑指 Offer 57. 和为s的两个数字
*/
public int[] twoSum(int[] nums, int target)
/*
* 双指针法:左指针从前向后,右指针从后向前,依次求和 sum 并与 target 比较,
* 若 sum < target,则左值应增大即 left++
* 若 sum > target,则右值应减小即 right--
* 相等时直接返回左值和右值
* 左、右指针相遇了还没找到对应的值,则 return new int[0]
*/
int left = 0;
int right = nums.length - 1;
while (left < right)
int sum = nums[left] + nums[right];
if (sum < target)
left++;
else if (sum > target)
right--;
else
return new int[]nums[left], nums[right];
return new int[0];
暑期编程PK赛 得CSDN机械键盘等精美礼品!来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof
以上是关于[LeetCode]剑指 Offer 57. 和为s的两个数字的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(剑指 Offer)- 57. 和为 s 的两个数字
LeetCode(剑指 Offer)- 57. 和为 s 的两个数字
[LeetCode]剑指 Offer 57. 和为s的两个数字
[LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列