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

LeetCode 217 Contains Duplicate排序解法代码逻辑疑问咨询

疑问1:关于遍历范围是否会漏判最后两个元素

你对range()的取值规则理解存在偏差,Python 中range(start, end)生成的是左闭右开的整数序列,只会包含start到end-1的整数,不会包含end本身。
以你举的nums = [2,14,18,22,22]为例:

  • 数组长度为5,len(nums)-1 = 4,因此range(0, len(nums)-1)实际生成的索引是0、1、2、3
  • 当i=3时,比对的是nums[3]和nums[4],刚好是数组最后两个元素,完全覆盖了所有相邻元素的比对场景,不会漏判。

疑问2:为什么末尾可以直接返回False

函数执行时只要遇到return语句就会直接终止运行并返回结果:

  • 循环过程中只要找到任意一对相邻相等的元素,就会立刻执行return True,整个函数直接退出,不会运行到循环后的代码
  • 只有当整个循环完整执行完毕,都没有触发return True时,才会走到最后一行代码,此时已经可以确定数组中不存在重复元素,因此直接return False即可,不需要额外搭配if else判断。

代码完整逻辑梳理

  1. 首先对数组进行排序,排序后所有重复的元素一定会相邻排列
  2. 遍历数组中每一组相邻元素:
    • 如果存在相邻元素值相等,说明有重复,直接返回True
  3. 遍历结束后未找到相等的相邻元素,说明所有元素互不相同,返回False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:00