算法每日一题(python,2024.05.22) day.4

题目来源(力扣. - 力扣(LeetCode)简单)

解题思路: 

法一:排序后遍历

每次与后一项对比是否相同,若有相同的则返回true,结束循环。若最后无相同的,则返回false

法二:去重对比长度

将数组的值输入set集合,与原来的对比长度,若相同则无重复的,返回false,否则返回true

优化:在添加时开始判断,添加失败则说明有重复的数字,此时已可以返回true并结束添加

代码实现:(代码直接复制可能有空格格式问题)

法一:

nums.sort()
for i in range(len(nums)-1):
    if nums[i]==nums[i+1]:
        return True
return False

法二:

if len(set(nums)) != len(nums):
    return True
else:
    return False

优化后:

pre = set()
for num in nums:
    if num in pre:
        return True
    pre.add(num)
return False

总结:

暴力遍历法耗时长,关于重复问题可以考虑set的去重属性,再观察相同属性,若相同则排序后数字一定在相邻位置,因此也可以用排序后遍历的方法来做。尽力考虑题目的多解,考虑数据量大时的优化方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neophyte0608

你的鼓励将使我创作学的更加快乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值