美文网首页数据结构与算法
剑指 Offer 57 和为s的两个数字

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

作者: itbird01 | 来源:发表于2021-12-23 07:09 被阅读0次
    题目.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;
        }
    }
    

    相关文章

      网友评论

        本文标题:剑指 Offer 57 和为s的两个数字

        本文链接:https://www.haomeiwen.com/subject/mhnqqrtx.html