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++常用容器了。