zoukankan      html  css  js  c++  java
  • 剑指offer——和为s的两个数字VS和为s的连续正数序列

    两种方法都类似于快排的变形。

    #include <iostream>
    #include <string>
    using namespace std;
    
    bool FindNumbersWithSum(int data[],int length,int sum,int *num1,int *num2)
    {
        bool found=false;
        if (length<1||num1==NULL||num2==NULL)
        {
            return found;
        }
        int ahead=length-1;
        int behind=0;
        while(ahead>behind)
        {
            long curSum=data[ahead]+data[behind];
            if (curSum==sum)
            {
                *num1=data[behind];
                *num2=data[ahead];
                found=true;
                break;
            }
            else if(curSum>sum)
            {
                ahead--;
            }
            else
            {
                behind++;
            }
        }
        return found;
    }
    
    void PrintContinuousSequence(int small,int big)
    {
        for (int i=small;i<=big;i++)
        {
            cout<<i<<" ";
        }
        cout<<endl;
    }
    
    void FindContinuousSequence(int sum)
    {
        if (sum<3)
        {
            return;
        }
        int small=1;
        int big=2;
        int middle=(1+sum)/2;
        int curSum=small+big;
        while(small<middle)
        {
            if (curSum==sum)
            {
                PrintContinuousSequence(small,big);
            }
            while(curSum>sum&&small<middle)
            {
                curSum-=small;
                small++;
                if (curSum==sum)
                {
                    PrintContinuousSequence(small,big);
                }
            }
            big++;
            curSum+=big;
        }
    }
    
    
    
    int main()
    {
        int str[]={1,2,3,4,5,6,7,8,9,10};
        int m,n;
        FindNumbersWithSum(str,10,13,&m,&n);
        cout<<m<<n<<endl;
        FindContinuousSequence(100);
        return 0;
    }
  • 相关阅读:
    hadoop面试
    常用脚本
    1.kafka
    2.flink
    java面试
    Hbase 项目
    linux 2>&1 和 &的意思
    Jetbrains系列产品重置试用方法
    解决GitHub网页githubusercontent地址无法访问问题
    stylus 成熟的写法
  • 原文地址:https://www.cnblogs.com/dgy5554/p/3973384.html
Copyright © 2011-2022 走看看