算法:从1+1000000的O(1)的时间复杂度
从1+1000000的O(1)的时间复杂度
package com.gouqiang.other;
import org.junit.Test;
/**
* @author shengouqiang
* @date 2019/11/27
*/
public class TestTwo {
@Test
public void testOne(){
addToResult(1000000L);
addToResult(1000001L);
}
/**
* 判断请求数是否为单数
* @param requestNumber
* @return
*/
private boolean checkNumberIsSingular(long requestNumber){
if(0== requestNumber%2){
return false;
}
return true;
}
/**
* 计算求和
* @param reqNumber
*/
private void addToResult(long reqNumber){
if(checkNumberIsSingular(reqNumber)){
System.out.println(reqNumber*(reqNumber/2+1));
return;
}
System.out.println((reqNumber+1)*(reqNumber/2));
}
}
运行结果如下:
500000500000
500001500001
这里主要利用了数学中的等差数列求和公式
。
转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至 gouqiangshen@126.com
文章标题:算法:从1+1000000的O(1)的时间复杂度
文章字数:130
本文作者:BiggerShen
发布时间:2019-11-27, 13:49:50
最后更新:2024-01-16, 03:51:15
原始链接:https://shengouqiang.cn/Algorithm/AlgorithmLearnDay01/版权声明: 转载请保留原文链接及作者。