和为S的两个数(首尾指针寻找)

和为S的两个数字

http://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b

  1. i,j分别指向首尾指针。
    • 当a[i]+ a[j] > sum 时,j--。
    • 当a[i]+ a[j] < sum 时,i++。
    • 当a[i]+ a[j] == sum 时,直接返回a[i],a[j]。
  2. 不用判断相乘值是否为最小值,对于a+b=n。
    • 当|a-b|最大的时候a*b最小
    • 当|a-b|最小时候a*b最大。
class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> a,int sum) {
        if(a.empty())return {};
        int i = 0, j = a.size() - 1;
        while(i < j) {
            if(a[i] + a[j] == sum) return {a[i], a[j]}; 
            if (a[i] + a[j] < sum) ++i;
            if (a[i] + a[j] > sum) --j;
        }
        return {};
    }
};

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 会员标识 头像
点赞 评论 收藏
转发
头像 会员标识 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
1 收藏 评论
分享

全站热榜

正在热议