LeetCode刷题:存在重复元素

题目:

给你一个整数数组 nums 。如果任一值在数组中出现至少两次 ,返回 true;如果数组中每个元素互不相同,返回 false 。
示例 1:
输入:nums = [1,2,3,1]
输出:true
示例 2:
输入:nums = [1,2,3,4]
输出:false

代码实现:

class Solution {
public:
    bool cmp(int i,int j)
    {
        return i<j;
    }

    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());//将数组进行排序
        //对排序后的数组进行遍历,比较前后两个元素的大小
        for(int i = 0; i < nums.size()-1; i++){
            if(nums[i] == nums[i+1]){
                return true;
            }
        }
        return false;
    }
};

思路很简单:先排序,对排序后的元素前后进行比较即可。

这里主要对C++自带的sort排序函数的使用作一些介绍:

  • 使用必须包含头文件
#include <algorithm>
using namespace std;
  • 如果是对vector类型数据排序,假设定义的vector变量为 vector <Type> num,则如下:
//cmp是自定义的比较器(判断函数)
sort(num.begin(), num.end(), cmp)
  • 如果是对array类型数据排序,假设a表示要排序的数组,含n个元素,则如下:
//cmp是自定义的比较器(判断函数)
sort(a,a+n,cmp);

下面的代码是一个简单的测试:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int i, int j)
{
    return i > j;
}
int main() {
    //array元素排序
    int nums[] = {1,5,2,3};  
    sort(nums, nums+4, cmp);
    cout << "--------------" << endl;
    for (int i = 0; i < sizeof(nums)/sizeof(nums[0]); i++) {
        cout << nums[i] << endl;
    }
    cout << "--------------" << endl;
	//vector元素排序
    vector<int> nums1 = { 1,5,2,3 };
    sort(nums1.begin(), nums1.end(), cmp);
    cout << "--------------" << endl;
    for (int i = 0; i < nums1.size(); i++) {
        cout << nums1[i] << endl;
    }
    cout << "--------------" << endl;
    
    system("pause");
    return 0;
}

这里的cmp函数就是自定义的比较器,即将对应的元素按从大到小的顺序进行排序。
输出的结果为:

--------------
5
3
2
1
--------------
--------------
5
3
2
1
--------------

( C++竟然没有现成的获取数组长度的函数,还得用sizeof(arr) / sizeof(arr[0]) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

想学摄影的IT男

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值