算法:从1+1000000的O(1)的时间复杂度

  1. 从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/

版权声明: 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏