题解 | #和为S的两个数字#

和为S的两个数字

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

双指针

注意:
1、双指针调整位置
2、更新最小乘积

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        int start =0;
        int end = array.size()-1;
//         std::vector< std::pair<int, int> > map_of_eles;
        std::pair<int, int> res1{0,0};
        int tmp_min = INT_MAX;
        while(start < end){
            int tmp = array[start] + array[end];
            if(tmp > sum){
                end--;
            }
            else if(tmp < sum){
                start++;
            }
            else{        // 相等
                if(array[start]*array[end]<tmp_min){
                    tmp_min = array[start] * array[end];
                    res1 = {array[start], array[end]};

                }
                start++;
                end--;

            }
        }

        std::vector<int> res;
        if(res1.first ==0 && 0== res1.second){
            return res;
        }

        res.push_back(res1.first);
        res.push_back(res1.second);


        return res;
    }
};
全部评论

相关推荐

11-29 00:55
门头沟学院
区域赛银,邀请赛金,打算十二月打下Java基础、背点八股、写个外卖后去投福建小厂的寒假实习,简历应该怎么写呢?以及福州/和厦门有推荐的小厂吗?
牛客53210502...:简历一页:把区域银,邀请赛金标粗,其他的奖除非凑一页否则没有必要写。或者多页:每个站一行这样都列出来。项目经历看看牛客其他人是怎么写的,写的不好呢。简历打磨好按部就班没问题的
点赞 评论 收藏
分享
活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务