LeetCode-217. Contains Duplicate

Description:

这里写图片描述

Solution 1(C++):

这里写图片描述

Solution 2(C++):

这里写图片描述

算法分析:

解法一的思路很简单,那就是我首先将数列排序,然后遍历一遍,这时只需要检查相邻的两个元素有没有相同的就可以判断了。但是要注意到的是,我还是没有养成分类讨论的习惯。这里要注意首先是题目中说了,要重复出现两次,才算是true。那么如果数列的长度小于2,就应该返回false。
解法二利用了set容器。set包含0个或多个不重复不排序的元素,简单的说,set保证容器中元素所有元素不重复。那么如果nums中元素传入set,长度和原来的一样,说明nums没有重复元素。否则就有。

程序分析:

解法一没啥好说的,比较简单。
解法二设计到了set容器。那么这里就说一下set容器。关于set容器,有一些比较系统的博客可参考:
C++中set用法详解
程序中,将nums中的数据传入新建的int型的set容器。

set<int>(nums.begin(),nems.end());

然后计算set的长度:

set<int>(nums.begin*(,nums.end()).size();

然后与原数组长度进行比较就好了。结果作为返回值,即答案。

写在最后:

其实,这里我通过这段时间做题,已经接触到了好几种容器。这些容器,在我之前刷华为OJ的时候也有遇到过,也有总结过。但是没有系统的整理成博客,所以有必要进行整理。在此也开一个坑。是时候研究一下这些C++常用容器了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值