Leetcode——统计数组中的元素练习

news2025/4/23 16:16:44

错误的集合

在这里插入图片描述
在这里插入图片描述

此题没做出来

class Solution {
public:
    vector<int> findErrorNums(vector<int>& nums) {
        vector<int> errorNums(2);
        int n = nums.size();
        sort(nums.begin(), nums.end());
        // 记录上一个元素
        int prev = 0;
        for (int i = 0; i < n; i++) {
            int curr = nums[i];
            if (curr == prev) {
                errorNums[0] = prev;
            }
            else if (curr - prev > 1) {
                errorNums[1] = prev + 1;
            }
            prev = curr;
        }
        // 最后一个元素单独考虑
        if (nums[n - 1] != n) {
            errorNums[1] = n;
        }
        return errorNums;
    }
};

数组的度
在这里插入图片描述
此题没做出来(有思路,但不会哈希表)

class Solution {
public:
    int findShortestSubArray(vector<int>& nums) {
        // 哈希表构造(映射为长度为三的数组)
        unordered_map<int, vector<int>> mp;
        int n = nums.size();
        // 哈希表将数组映射为一个长度为3的数组,分别代表出现次数,第一次出现位置,最后一次出现位置
        for (int i = 0; i < n; i++) {
            // count()函数: 统计某个key值对应的元素个数, 因为unordered_map不允许重复元素,所以返回值为0或1
            if (mp.count(nums[i])) {
                // 如果是重复元素
                mp[nums[i]][0]++;
                // 最后一次出现位置
                mp[nums[i]][2] = i;
            }
            else {
                // 如果不是重复元素
                mp[nums[i]] = { 1, i, i };
            }
        }
        int maxNum = 0, minLen = 0;
        for (auto& [_, vec] : mp) {
            if (maxNum < vec[0]) {
                // 如果元素出现次数大于最大值
                maxNum = vec[0];
                // 求长度
                minLen = vec[2] - vec[1] + 1;
            }
            // 如果存在同样次数的不同元素则要比较最小长度
            else if (maxNum == vec[0]) {
                if (minLen > vec[2] - vec[1] + 1) {
                    minLen = vec[2] - vec[1] + 1;
                }
            }
        }
        return minLen;
    }
};

448. 找到所有数组中消失的数字

在这里插入图片描述

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        // 给定数组长度
        int n = nums.size();
        // 定义动态数组
        vector<int> num;
        // 排序并去重
        sort(nums.begin(), nums.end());
        nums.erase(unique(nums.begin(), nums.end()), nums.end());
        // i取值[1,n],k遍历数组下标
        int i = 1, k = 0;
        // 思想:已经排序去重数组中依次与[1,n]比较,如元素不能对应则应添加到动态数组中,i++继续比较;
        //       如果元素对应则k++,i++
        while (i <= n) {
            if (nums[k] != i) {
                // 动态数组添加元素
                num.push_back(i);
                i++;
            }
            else {
                k++;
                i++;
            }
        }
        return num;
    }
};

442. 数组中重复的数据

在这里插入图片描述

class Solution {
public:
    vector<int> findDuplicates(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        vector<int> n;
        int count = 1;
        // 数组中仅存在重复数为1或2的元素,计数为2就可以加入动态数组n中
        for (int i = 0; i < nums.size() - 1; i++) {
            if (nums[i] == nums[i + 1]) {
                count++;
                if (count == 2) {
                    n.push_back(nums[i]);
                }
            }
            else {
                count = 1;
            }
        }
        return n;
    }
};

41. 缺失的第一个正数

在这里插入图片描述

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        // 数组排序去重
        sort(nums.begin(), nums.end());
        nums.erase(unique(nums.begin(), nums.end()), nums.end());
        // 计算去重后数组长度(去重不影响寻找最小缺失正数)
        int len = nums.size();
        // i为正数遍历,k为数组下标遍历
        int i = 1, k = 0;
        // 主体遍历条件:i值小于数组长度len
        while (i <= len) {
            // 当数组存在0或负数时
            while (nums[k] < 1) {
                // 数组下一个元素存在时,k++
                if (k < len - 1) {
                    k++;
                }
                // 数组下一个元素不存在时,停止遍历,此时i值即为最小不存在正数
                else {
                    break;
                }
            }
            // 如果数组元素与i值不对应则结束遍历,此时i值即为最小缺失正数
            if (nums[k] != i) {
                break;
            }
            // 如果数组元素与i值对应
            else {
                // 当数组下一元素存在时k++,i++继续比较
                if (k < len - 1) {
                    k++;
                    i++;
                }
                // 当遍历到数组最后一个元素时,说明数组中存在0或负数,可以结束遍历,i++即为最小缺失正数
                else {
                    i++;
                    break;
                }
            }
        }
        return i;
    }
};

H 指数

在这里插入图片描述

class Solution {
public:
    int hIndex(vector<int>& citations) {
        // 数组升序
        sort(citations.begin(), citations.end(), greater<>());
        int h = 0, i = 0;
        while (i<citations.size() && citations[i]>h) {
            i++;
            h++;
        }
        return h;
    }
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是指标体系,怎么搭建一套完整的指标体系?(附PDF素材)

什么是指标体系&#xff0c;怎么搭建一套完整的指标体系&#xff1f;数字化转型过程中&#xff0c;这个问题一直困扰着数据分析师。主要体现在&#xff1a; 各部门根据业务需求&#xff0c;都有一部分量化指标&#xff0c;但不够全面&#xff0c;对企业整体数据分析应用能力提…

4.0 Beta2版本编译RK3588错误问题解决

最近有小伙伴在问4.0 Beta2版本编译RK3588&#xff08;也就是dayu210&#xff09;时&#xff0c;会有各种莫名奇妙的报错 &#xff08;1&#xff09;subsystem name config incorrect in ....... 这个原因是OH代码加入了编译检查&#xff0c;临时措施是把需要编译检查的文件放…

提升自媒体影音创作效率,这 10 款 AI 工具打工人必备!

随着AI工具的不断涌现&#xff0c;自媒体影音创作的效率也得到了提升&#xff0c;本次为大家介绍10款AI影音工具&#xff0c;为你的自媒体创作助力&#xff01; 还是先上一张脑图&#xff1a; 自媒体必备AI工具 1. Runway AI视频编辑工具&#xff0c;支持文字转视频 目前最…

Elasticsearch:使用 Langchain 和 OpenAI 进行问答

这款交互式 jupyter notebook 使用 Langchain 将虚构的工作场所文档拆分为段落 (chunks)&#xff0c;并使用 OpenAI 将这些段落转换为嵌入并将其存储到 Elasticsearch 中。然后&#xff0c;当我们提出问题时&#xff0c;我们从向量存储中检索相关段落&#xff0c;并使用 langch…

UnityShaderLab —— 简单的流光shader

原理&#xff1a; 就是在原先的模型表面叠加一层可以流动的图片&#xff0c; 算法代码&#xff1a; float2 tex; tex float2(i.uv.x - _Time.x * _Speed,i.uv.y); fixed4 col0 tex2D(_Tex, tex)* _Strenth; fixed4 col1 tex2D(_MainTex, i.uv); return col0 col1; 这里…

ADS版图中连接提示线设置

ADS版图连接提示线设置 简述solve 简述 在ADS版中连接提示线设置&#xff0c;如下图1所示&#xff0c;有点类似于AD中“金线”&#xff0c;提示同一网络的焊盘&#xff0c;但在ads中&#xff0c;是产生了同一层的wire&#xff0c;证据如图2所示。如果没有设置的话&#xff0c;…

【Java学习之道】字符串处理工具类

引言 在Java中&#xff0c;我们常常需要处理字符串&#xff0c;比如读取用户输入、解析文件、网络通信等等。Java提供了一个强大的字符串处理工具类——java.lang.String。这个类包含了各种有用的方法&#xff0c;能帮你轻松地处理字符串。在这一节中&#xff0c;我们将介绍几…

基于 SpringBoot+Hikvision SDK 远程查看配置海康网络摄像头配置

写在前面 工作中遇到&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对大…

【C++杂货铺】一文带你走进哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列

文章目录 一、unordered 系列关联式容器二、unordered_map1.1 unordered_map 介绍1.2 unordered_map 的接口说明1.2.1 unordered_map 的构造1.2.2 unordered_map 的容量1.2.3 unordered_map 的迭代器1.2.4 unordered_map 的元素访问1.2.5 unordered_map 的查询1.2.6 unordered_…

【正点原子STM32连载】 第四十二章 IIC实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第四…

Zookeeper【Curator客户端Java版】从0到1——万字学习笔记

目录 初识Zookeeper Zookeeper作用 维护配置信息 分布式锁服务 集群管理 生产分布式唯一ID Zookeeper的设计目标 Zookeeper 工作机制 数据模型 ZooKeeper 命令操作 服务端常用命令 客户端常用命令 ZooKeeper JavaAPI操作 Curator 介绍 Curator API 常用操作 导入依赖 建立连接 …

腾讯wifi码推广如何代理?方法详解!

腾讯wifi码推广是一种利用微信扫码连接商家wifi的方式&#xff0c;用户看完广告后就可以免费上网&#xff0c;而推广者则可以获得广告收益。 那么怎样代理腾讯wifi码推广呢&#xff1f; 答案是腾讯官方没有这个项目&#xff0c;那是怎么回事呢&#xff0c;腾讯wifi码正确的名称…

时间复杂度O(n)

目录 一. 前言 二. 时间频度和空间复杂度 2.1. 时间频度 2.2. 空间复杂度 三. 时间复杂度 3.1. 概念 3.2. 常见的时间复杂度 3.3. 计算实例 四. 大O记法 五. 对数log小知识 一. 前言 同一问题可用不同算法解决&#xff0c;而一个算法的质量优劣将影响到算法乃至程序的…

【计算机网络笔记】数据交换之电路交换

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 文章目录 系列文章目录为什么需要数据交换数据交换的类型电路交换什么是多路复用&#xff1f;频分多路复用&#xff08;FDM&#xff09;时分多路复用&#xff08;TDM&#xff09;波分…

深度神经网络压缩与加速技术

// 深度神经网络是深度学习的一种框架&#xff0c;它是一种具备至少一个隐层的神经网络。与浅层神经网络类似&#xff0c;深度神经网络也能够为复杂非线性系统提供建模&#xff0c;但多出的层次为模型提供了更高的抽象层次&#xff0c;因而提高了模型的能力。深度神经网络是一…

百度SEO优化全攻略(提高网站排名的5个方面)

百度SEO入门介绍&#xff1a; 随着互联网的不断发展&#xff0c;SEO已经成为网站优化的重要一环。而百度作为中国最大的搜索引擎&#xff0c;其SEO优化更是至关重要。SEO不仅能够提高网站排名&#xff0c;还能够提高网站流量、用户体验以及品牌知名度。因此&#xff0c;掌握百…

软件性能瓶颈问题之数据库性能问题定位

前言&#xff1a;数据库的性能瓶颈包括&#xff1a;数据库索引&#xff0c;锁&#xff0c;表空间&#xff0c;慢sql&#xff0c;数据量 一、性能问题 1.1 缺乏索引&#xff1a; 索引本质上是一种数据结构&#xff0c;允许数据库快速查找特定的数据 1.2 查询效率低&#xff1…

【数据库系统概论】第三章关系数据库标准语言SQL

选择题会考&#xff1a; 1.数据查询&#xff1a; SELECT&#xff1a;用于选择需要查询的列和行。 FROM&#xff1a;用于指定要查询的表。 WHERE&#xff1a;用于指定查询条件。 GROUP BY&#xff1a;用于按照指定的列对结果进行分组。 HAVING&#xff1a;用于指定分组条件…

解决jmeter软件显示为英文、返回数据乱码、设置编码格式的问题

一.jmeter软件每次打开都需要手动切换中文 1.修改配置文件&#xff0c;可以把jmeter设置成中文&#xff1a; 2.打开jmeter.properties配置文件&#xff0c;修改languagezh_CN 二.返回数据乱码 改配置文件 进入Jmeter的bin目录下&#xff0c;找到jmeter.properties文件&#…