从论 a = a + b 和 a += b 的区别继续讨论:
从上面的例子中我们看到,a = a + b
超时,a += b
却没有超时
那我们来分析一下原因:
TLE是超时,而两处代码除了赋值没有其他区别
那肯定是这处超时(好像有点废话)
那为什么这里超时了呢:
两处都是一样的效果,那也就是a = a + b
赋值多了一次
那又双叒叕是为什么呢?
推理一下:
a = a + b
是绝对的赋值,其逻辑是:
把 a 加上 b,得到一个新的值,再将a赋值为这个新的值
a += b
不完全是赋值,其逻辑是:
把 a 直接加上 b
由此可见,a += b
少一个步骤,其时间复杂度肯定相对较小
所以建议大家再这种赋值的时候++
或--
或+=
或-=
或/=
或*=
或%=
或^=
……等等