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

和为S的两个数字

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

1 思路

还算一次AC吧

  • 读题:有序递增序列,两个数的和,做好边界的测试
  • 对于双指针,尤其右边指针的初始化要落实
  • 对于双指针的移动要想好 不同于初始化大小为1的窗口,这是大窗口变小!!

1.1 坑点

alt

2 code

class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        
        vector<int> retV;
//         if(NULL == array) {
//             return retV;
//         }
        if(1 >= array.size()){//at least 2个
            return retV;
        }
        if(0>= sum ){
            return retV;
        }
        //序列已经有序,典型双指针(不是小窗口启动那种哈);
        int left=0, right= array.size()-1 , localSum = 0;
        while( left < right){
            localSum= array[left]+array[right];
            //sum lower
            
            //区分窗口大小
            if(localSum <sum){
                left++;
            }
            //sum higher
            else if( localSum>sum){
                right--;
            }
            //sum equal
            else{
                retV.push_back(array[left]);
                retV.push_back(array[right]);
                break;
            }
            
        }//while
        
        return retV;
        
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 15:58
投个小米提前批试试水,先投一个岗位看看形势,不行就再沉淀一下投第二个岗位,莫辜负
Java抽象带篮子:我嘞个骚刚,已经开始研发6g了吗
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
07-15 16:52
已编辑
门头沟学院 Java
周五投的,流程今天结束
投递地平线等公司10个岗位
点赞 评论 收藏
分享
弦五Strings:他之所以会举报你代课是因为在这种人眼里正常上课就是正义代课就是邪恶,典型二极管思维,处理方法就是私下沟通,你就说你自己家里经济困难或者家里父母生病什么之类的,需要去打工挣钱,用尽孝的正义对冲他认为的上课的正义,他可能就妥协了。
我的实习日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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