【数组】相关类型题目整理[四]

这篇博客整理了数组类型的编程题目解法,包括力扣217题的哈希表法和排序法,153题的排序、遍历和二分查找法,以及162题的一次遍历和二分查找法来寻找峰值。通过这些方法,可以高效解决数组中存在重复元素、寻找旋转排序数组最小值和找到峰值的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、力扣217. 存在重复元素

在这里插入图片描述

(一)哈希表法

思路:遍历一遍数组,将出现的元素存储在哈希表中,并统计出现的次数;然后遍历一遍哈希表,如果哈希表的value值有大于1的情况,则说明存在重复元素。

代码如下:

class Solution 
{
   
public:
    bool containsDuplicate(vector<int>& nums) 
    {
   
        unordered_map<int,int>hash;
        for(int i=0;i<nums.size();i++)
        {
   
            hash[nums[i]]++;
        }
        for(auto&x: hash)
        {
   
            if(x.second>1)
            {
   
                return true;
            }
        }
        return false;
    }
};

时间复杂度O(N),空间复杂度也是O(N)

(二)sort排序

排序的思路比较简单,先用sort函数对数组排序,排好序之后判断有没有连续两个元素相等,如果有,则存在重复元素

代码如下:

class Solution 
{
   
public:
    bool containsDuplicate(vector<int>& nums) 
    {
   
        sort(nums.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值