查看: 1319| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] ++i i++ 在for loop 中有什么区别

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
518. Coin Change 2
class Solution {
    public int change(int amount, int[] coins) {
        int[] g=new int[amount+1];
        Arrays.fill(g,0);
        g[0]=1;
        for(int i=1;i<=coins.length;++i)
            for(int j=0;j<=amount;++j){
                if(coins[i-1]<=j)
                    g[j]+=g[j-coins[i-1]];
            }
        return g[amount];
               
    }
}

比如这题中吧++i 和++j 换成i++ j++ ,并不会影响结果。



上一篇:LEETCODE 挂了吗?
下一篇:如何判断dp array size应该是len 还是 len +1
推荐
magicsets 2018-7-13 13:10:12 | 只看该作者
全局:
这个不会影响结果,而且性能上也没有差异,比如你这段代码用的Java,如果把用++i和i++的两份代码分别编译成XXX.class,再用javap -c XXX.class去看字节码的内容,会发现两份字节码一模一样,也就是说Java在前端编译的时候就已经把相关优化做了

但是一些coding style里会规定变量作为iterator时(例如for loop)使用前缀格式,也就是++i。
比如说Google C++ Style Guide的这一段:
https://google.github.io/styleguide/cppguide.html#Preincrement_and_Predecrement
回复

使用道具 举报

全局:
在一行里面++i 最先做, i++最后做。算习惯问题吧,有些场景里面你得注意。

举个例子, 假如你已有PQ,里面共n个数。 现在跟你要第k小, 怎么写呢? 简单写法

```
while(--k>0) pq.poll();
return pq.poll();
```

这里如果你写k-->0就会多数一次,大概这样。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表