zoukankan      html  css  js  c++  java
  • 面试题 41 和为s的两个数字VS 和为S的连续整数序列

    (1)和为S的两个数字

    bool findNumberWithSum(int data[], int length, int sum, int &numb1, int &numb2){
        // data 中的数字序列递增
        if(data == NULL || length <1) return NULL ;
        
        int low = 0;
        int high = length - 1;
        
        while(low < high){
            
            int tp = data[low] + data[high] ;
            if( tp == sum){
                numb1 = data[low];
                numb2 = data[high];
                return true;
            }else if(tp < sum){
                low++;
            }else{
                high--;
            }
        }
    
        return false;
    }

    (2)和为S的连续整数序列

    和(1)一样双指针思想。不过这里双指针分别指向整数序列的开头和结尾

    void print(int small, int big){
        while(small <= big){
            printf("%d ",small);
            small++;
        }
    }
    bool findContinue(int sum){
        if(sum < 3) return;
        int small = 1;
        int big = 2;
        int mid = (1+sum)>>1;
        int curSum = 3;
        
        while(small < mid){
            
            if(curSum == sum)
                print(small, big);
            while(curSum > sum && small < mid){
                curSum -= small;
                small++;
                if(curSum == sum)
                    print(small, big);
            }
            ++big;
            curSum += big;
        }
    }
  • 相关阅读:
    jQuery
    我的微信公众号被封了
    安装pillow
    win 10 无线标志都不出现
    msfvenom 摄像头
    Python list的定义和删改
    Python md5解密
    Python 同ip网站查询(制作网站接口)
    python 带参数运行
    Python 查看本机WiFi密码
  • 原文地址:https://www.cnblogs.com/graph/p/3327077.html
Copyright © 2011-2022 走看看