189 8069 5689

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& 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 
using namespace std;
  • 如果是对vector类型数据排序,假设定义的vector变量为vectornum,则如下:
//cmp是自定义的比较器(判断函数)
sort(num.begin(), num.end(), cmp)
  • 如果是对array类型数据排序,假设a表示要排序的数组,含n个元素,则如下:
//cmp是自定义的比较器(判断函数)
sort(a,a+n,cmp);

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

#include#include#include 
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元素排序
    vectornums1 = {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]))

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:LeetCode刷题:存在重复元素-创新互联
网页路径:http://jkwzsj.com/article/pjsps.html

其他资讯