剑指offer41:和为s的两个数字VS和为s的连续正数序列

来源:互联网 发布:jquery ajax 遍历json 编辑:程序博客网 时间:2024/05/01 09:25
/** * Created by WHZ on 2017/4/7. */public class offer41 {    boolean FindNumbersWithSum(int[] data,int length,int sum,int[] num1,int[] num2){        boolean 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[0] = data[behind];                num2[0] = data[ahead];                found = true;                break;            }else if(curSum>sum)                ahead--;            else                behind++;        }        return found;    }    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;        }    }    private void PrintContinuousSequence(int small, int big) {        for(int i = small;i<=big;i++)            System.out.print(i);        System.out.println();    }}

0 0