两数和
题意是给出一个数组,输出和为k的两个数。数组为无序的
三数和
从给定的数组中找三个数,让它们的和为某个值。
和为s的连续的正整数
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
import java.util.ArrayList;
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;
}
}