自学算法之算法之美

以前学习了算法,但没怎么深入理解。

偶然得知,身边的人都成为了算法仙人,原因是仙凡之间有交流障碍。

汗颜。

痛定思痛,想体验算法之美,所有以下是本人的算法入门----时空复杂度的计算。

而后,笔者会尽量用简单的词语,让读者理解。

首先,我们先看一道题,别担心,是一道简单的题。

题设如下:

写出一个算法,求下面序列之和: -1, 1, -1, 1, .......(-1)^n    (ps:此处为-1的n次方)。

遇到这类问题,第一反应一般是无脑蛮力计算,请看算法1:

    	int sum = 0;
    	for(int i = 1; i < n; i++){
    		sum += (-1) ^ n;
    	}

的确,无脑的确能解决问题,但能不能再优雅一点?

好吧,我们再来看看算法2:

    	if(n % 2 == 0){
    		sum = 0;
    	}else{
    		sum = -1;
    	}

其实,每一对之和为零,我们只需要统计判断n的奇偶性,答案自然而解。

这有点类似高斯算法,解决1到100的和一样。

综上呢,可以看出,每一道题,都有不同的解决方案,有的蛮横,有的优雅。

蛮横和优雅之间,我选择.....你呢?

本博客例子,摘自《趣学算法》 陈小玉 编著。

若是读者喜欢,请支持正版。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值