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

和为S的两个数字

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

public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        vector<int>ans;
        if(array.size()<2)return ans;
        //使用双指针解决
        int i=0,j=array.size()-1;
        while(i<j){
            int temp=array[i]+array[j];
            if(temp<sum){//如果比这个数小那么左指针指针向右移
                temp-=array[i];
                i++;
            }
            else if(temp>sum){//比这个数大,右指针向左移
                temp-=array[j];
                j--;
            }
            else{//找到两个数
                ans.push_back(array[i]);
                ans.push_back(array[j]);
                   break;
            }
        }
             return ans;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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