美文网首页
和为s的问题

和为s的问题

作者: 稀饭粥95 | 来源:发表于2018-08-29 21:26 被阅读6次

    和为S的连续正数序列

    a为1,b为2。如果a+b的值小于s,那么b++,如果a+b的值大于s那么a++

    public class Solution {
            ArrayList<ArrayList<Integer> > list = new ArrayList<ArrayList<Integer>>();
             
            public void numberSeqSum(int sum){
                if(sum==0) System.out.println("no");
                int small = 1;
                int big = 2;
                int mid = (sum+1)/2;//至少两个数
                int total = small+big;
                while(small<mid&&small<big){
                    if(total==sum){
                        ArrayList<Integer> l = new ArrayList<Integer>();
                        for(int i=small;i<=big;i++){
                            l.add(i);
                        }
                        list.add(l);
                        //System.out.println(small+" "+big);
                        big++;
                        total = total+big;
                    }else if(total < sum){
                        big++;
                        total = total + big;
                    }else{
                        total = total - small;
                        small++;
                    }
                }
                 
            }
            public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
               if(sum==1||sum==2) return list;
               numberSeqSum(sum);
               return list;
            }
    }
    

    和为s的两个数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    public class Solution {
        public ArrayList<Integer> FindNumbersWithSum(int [] s,int target) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            if(s.length==0) return list;
            int a=0;int b=s.length-1;
            while(a<b){
                int sum = s[a] + s[b];
                if(sum==target) break;
                else if(sum>target) b--;
                else a++;
            }
            if(a==b){
                return list;
            }
            list.add(s[a]);
            list.add(s[b]);
            return list;
    }
    

    相关文章

      网友评论

          本文标题:和为s的问题

          本文链接:https://www.haomeiwen.com/subject/rdqlwftx.html