今天群里问了一个面试题,这里记录一下,欢迎指点,提出更优方案:
题目:
输入一个数值,求出这个数值所包含的相邻数的和等于这个数值的全部数,并且全部输出 例:输入数 15
输出:15=1+2+3+4+5
15=4+5+6
15=7+8 求思路
public static void countNum( int num){
int rs = 0;
for(int i=1,j=1;i<=(num/2)+1;i++){
if(rs<num){
rs += i;
}
if(rs > num){
rs -= j;
j++;
if(rs>num){
i--;
}
}
if(rs == num){
System.out.println(j+" + ... + "+i +" = "+num);
rs -= j;
j++;
}
}
}
public static void main(String[] args) {
long a = System.currentTimeMillis();
countNum(100000000);
long b = System.currentTimeMillis();
long c = b-a;
System.out.println("总时间:"+c+"毫秒");
}
思路:1.数字依次从1 开始向后 连续相加:1+2+3+...
2.没加一次,结果集和比较的数字相比,等于就打印,小于 继续加,大于 就减去最前面的一个数
3.循环完毕,这里就只打印前末 数字