美文网首页
和为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的问题

    和为S的连续正数序列 a为1,b为2。如果a+b的值小于s,那么b++,如果a+b的值大于s那么a++ 和为s的两...

  • 逆等差序列问题

    问题 和为n 连续正数序列 问题分析 此问题为等差序列求和的逆计算等差学列求和公式为:S = na + dn(n-...

  • 和为 s 的数字

    和为 k 的两个数字一个递增排序的数组,在其中查找两个数使得其和 k。如果有多组,输出任意一对即可。思路:可以简单...

  • 扩展KMP入门

    拓展kmp是对KMP算法的扩展,它解决如下问题:定义母串S,和字串T,设S的长度为n,T的长度为m,求T与S的每一...

  • LeetCode | 面试题 57 - Ⅱ. 和为s的连续正数序

    LeetCode 面试题 57 - Ⅱ. 和为s的连续正数序列【Easy】【Python】【滑窗】【数学】 问题...

  • 和为S的两个数

    问题描述给出一个递增数组和一个目标值s,找出和为s的两个数问题解法定义两个指针start,end,分别指向头与尾。...

  • leetcode005-最长回文子串

    问题描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 回文就是正读和...

  • 和为S的连续数组

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

  • 学习5S问题处理法

    学习5S问题处理法:怎么应对问题才能转危为机? 什么是5S问题处理法? 5S 问题处理法,也就是把处理问题的过程分...

  • 和为s的两个数 & 和为s的连续的数

    和为s的两个数 要求数组要排序 和为s的连续的正整数 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的...

网友评论

      本文标题:和为s的问题

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