【剑指Offer】和为s的两个数字
发布日期:2022-02-10 08:55:19 浏览次数:26 分类:技术文章

本文共 709 字,大约阅读时间需要 2 分钟。

题目

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

思路

1.可以用hash表存一下每个数字,其实找到两个数字之和 a+b = target,就相当于找到是否存在 target - b 这个数字。时间复杂度和空间复杂度均为 O(n)。

2.双指针对撞

题解(可行性证明):

代码

class Solution {public:    vector
twoSum(vector
& nums, int target) { //双指针对撞 int left,right; int len = nums.size(); left = 0; right = len - 1; while(left < right){ if(nums[left] + nums[right] > target){ right--; }else if(nums[left] + nums[right] < target){ left++; }else{ return vector
{nums[left] , nums[right]}; } } return vector
{}; }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/106070790 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】II. 数组中数字出现的次数 II
下一篇:【剑指Offer】丑数

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月13日 17时44分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章