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

Go语言有序数组去重代码中,此处为什么不能使用if替代for?

为什么不能用if替代这里的for

两者的执行逻辑有本质区别:

  • for j < len(nums) 是循环控制逻辑:只要j小于数组长度,就会重复执行大括号内的代码,直到j自增到超出数组下标范围才终止,刚好满足「遍历整个数组做去重」的需求。
  • 要是换成if j < len(nums),它只会执行一次大括号内的逻辑,执行完就直接跳到return i的步骤了,根本不会遍历完整的数组,结果肯定不符合预期。

你可以用自己写的测试用例nums := []int{1,2,2,3,5,5}验证下:
如果换成if,执行完第一次判断后j只会涨到1,函数就直接返回i=1了;而原来的for循环会一直让j从0遍历到6,覆盖所有数组元素,最终返回正确的去重后长度4。

你当前写的双指针逻辑本身是对的,是有序数组去重的最优解法,时间复杂度O(n)、空间复杂度O(1),只要保留for循环就能正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:24:03