[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];
    

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof

暑期编程PK赛 得CSDN机械键盘等精美礼品!

以上是关于[LeetCode]剑指 Offer 57. 和为s的两个数字的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 57. 和为 s 的两个数字

LeetCode(剑指 Offer)- 57. 和为 s 的两个数字

[LeetCode]剑指 Offer 57. 和为s的两个数字

[LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列

Leetcode剑指 Offer 57 - II. 和为s的连续正数序列(双指针)

LeetCode剑指offer57 II和为s的连续正数序列(用vector模拟滑动窗口)