You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode可被3整除的最大和题解中遍历vector<int>(t1)的作用是什么?

问题核心原因解析

vector<int>(t1)的作用是创建当前t1数组的临时只读副本,避免遍历过程中修改原数组导致的状态污染,具体逻辑如下:

  • 该解法为动态规划思路:t1[r]代表当前可获得的、除以3余数为r的最大和。每遍历到新元素a时,需要基于上一轮遍历完全结束后的三个旧状态值,来推导本轮加入a后的新状态。
  • 若直接写for(int j : t1),遍历的是原t1数组:遍历过程中你会不断修改t1的元素值,后续迭代拿到的j可能是本轮刚更新的新值,会导致同一个元素a被重复累加多次,违背了每个元素最多选一次的规则,最终得到错误结果。
  • 改为for(int j: vector<int>(t1))后,会先复制一份进入当前外层循环时的t1快照,整个内层循环遍历的都是这份固定不变的旧状态副本,所有更新都作用在原t1上,不会影响本轮遍历的取值,保证每个a只会基于上一轮状态计算一次,逻辑完全正确。

内容的提问来源于stack exchange,提问作者Dinesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:24:04