数据结构与算法

剑指 Offer 57 和为s的两个数字

2021-12-23  本文已影响0人  itbird01
题目.png

题意:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。

解题思路

解法1:--双指针方法
1.分析题意,数组已排序,所以声明两个指针,一个指向数组头,一个指向数组尾
2.从两边向中间遍历,如果和大于target,则j--,如果和小于target,则i++

解题遇到的问题

后续需要总结学习的知识点

##解法1
class Solution {
    public int[] twoSum(int[] nums, int target) {
        // 分析题意,数组已排序,所以声明两个指针,一个指向数组头,一个指向数组尾
        int i = 0, j = nums.length - 1;
        while (i < j) {
            // 从两边向中间遍历,如果和大于target,则j--,如果和小于target,则i++
            if (nums[i] + nums[j] < target) {
                i++;
            } else if (nums[i] + nums[j] > target) {
                j--;
            } else {
                return new int[]{nums[i], nums[j]};
            }
        }
        return null;
    }
}
上一篇下一篇

猜你喜欢

热点阅读