C语言 | Leecode C语言题解之第229题多数元素II

news2024/12/23 15:18:59

题目:

题解:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

/*
    假定 num1,num2 为出现次数大于 nums.length / 3 的两个数。(最多出现两个)
    遍历 nums, 若出现 num1、num2 中任意一数,计数+1,若都不等,则计数-1.
    若 num1、num2 有一个计数 < 0,则替换成当前遍历数(更换新的众数)
    数组可能出现 无众数 或只有 一众数 情况,所以需要再次遍历数组,统计所选众数出现次数,将满足条件(出现次数大于 nums.length / 3 )的数加入返回集合。
*/

int* majorityElement(int* nums, int numsSize, int* returnSize){
    int *arr = NULL;
    int can1, can2;
    int cnt1 = 0, cnt2 = 0;
    int i;

    if (nums == NULL || numsSize <= 1) {
        *returnSize = numsSize;
        return nums;
    } 
    can1 = nums[0];
    can2 = nums[1];
    
    for (i = 0; i < numsSize; i++) {
        if (nums[i] == can1) {
            cnt1++;
            continue;
        } else if (nums[i] == can2) {
            cnt2++;
            continue;
        } else {
            cnt1--;
            cnt2--;
        }

        /* 保证每次只替换一个数据 */
        if (cnt1 < 0) {
            can1 = nums[i];
            cnt1 = 1;
            cnt2++;
        }

        if (cnt2 < 0) {
            can2 = nums[i];
            cnt2 = 1;
            cnt1++;
        }            
    }
    
    cnt1 = 0;
    cnt2 = 0;
    for (i = 0; i < numsSize; i++) {
        if (nums[i] == can1)  {
            cnt1++;
        } else if (nums[i] == can2) {
            cnt2++;
        }
    }

    arr = (int *)malloc(sizeof(int) * 2);
    *returnSize = 0;
    i = 0;
    if (cnt1 > numsSize / 3) {
        arr[i++] = can1;
        *returnSize += 1;
    }
    if (cnt2 > numsSize / 3) {
        arr[i++] = can2;
        *returnSize += 1;
    }

    return arr;
}

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

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

相关文章

论文研读:ViT-V-Net—用于无监督3D医学图像配准的Vision Transformer

目录 摘要 介绍 方法 VIT-V-Net体系结构 损失函数 图像相似性度量 变形场正则化 结果与讨论 摘要 在过去的十年里&#xff0c;卷积神经网络(ConvNets)在各种医学成像应用中占据了主导地位并取得了最先进的性能。然而&#xff0c;由于缺乏对图像中远程空间关系的理解&a…

代码报错:There‘s no Qt version assigned to project Project.vcxproj

错误 Theres no Qt version assigned to project Project.vcxproj for configuration Release/Win32. Please assign a Qt installation in Qt Project Settings. Project C:\Users\FA-02405\AppData\Local\QtMsBuild\qt_vars.targets 68 1.设置qt Versions 选择…

2017-2023年全国土地利用分类(新增2023年,空间分辨率10米)

2017-2023年全国土地利用分类数据 数据介绍 本文分享一份全国范围的土地利用分类数据。 该数据来源于Esri&#xff0c;以Sentinel-2卫星的遥感图作为数据源&#xff0c;并结合人工智能土地分类模型制作而成。 该数据的时间范围是2017年-2023年&#xff0c;空间分辨率是10米&…

OSU!题解(概率dp)

题目&#xff1a;OSU! - 洛谷 思路&#xff1a; 设E()表示截止到i所获得的分数&#xff1b; 对于到i点的每一个l&#xff0c;如果第i1点为1&#xff0c;那么会新增分数3*l^23*l1; 就有递推公式方程&#xff1a; E()E()p[i1]p*(3*l^23*l1);(p代表截止到i获得长度l的概率)&a…

角点检测及MATLAB实现

一、角点简介 角点通常指的是两条直线构成角时的交点。‌在更广泛的应用中&#xff0c;‌角点这一概念也被扩展到数字图像处理领域&#xff0c;‌其中角点被定义为图像中物体轮廓线的连接点&#xff0c;‌这些点在某方面属性特别突出&#xff0c;‌即在某些属性上强度最大或者最…

如何通过SSH协议使用WinSCP实现Windows与Linux之间的远程公网文件传输

目录 ⛳️推荐 前言 1. Windows传输文件至Linux 2. WinSCP使用公网TCP地址连接 3. WinSCP使用固定公网TCP地址访问服务器 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 前…

QT通用配置文件库(QPreferences)

QT通用配置文件库(QPreferences) QPreferences项目是基于nlohmann/json的qt可视化配置文件库&#xff0c;将配置保存成json格式&#xff0c;并提供UI查看与修改&#xff0c;可通过cmake可快速添加进项目。默认支持基本类型、stl常用容器、基本类型与stl容器组成的结构体&#…

C#知识|账号管理系统:添加账号的功能笔记

哈喽,你好啊,我是雷工! 本节记录账号管理系统中添加账号的逻辑过程,以下为学习笔记。 01 实现内容 ①:实现当点击【保存到数据库】按钮时,将账号名称、原创篇数、账号简介、账号类型显示的内容存储到LGAccountManagerDB数据库的Account表中; ②:实现点击【保存到数据库…

手势控制机械手

机械手的手势控制 思路: 1 通过摄像头实现手势识别 2 将识别后的手势数据通过计算拇指与中指指尖的距离计算出舵机需要旋转的角度 3 将数据通过mqtt发送给mqtt服务器 4 硬件通过mqtt获取需要旋转的角度控制舵机旋转 开发环境: 硬件: ESP8266、舵机 硬件代码: 软件环…

颗粒饲料机器,打造成套饲料生产线

无论您是大型养殖场还是小型养殖户&#xff0c;我们的颗粒饲料机器能满足您的需求。我们致力于为客户打造成套饲料生产线&#xff0c;让您在养殖业中脱颖而出。 &#x1f680; 开启养殖新时代&#xff0c;您的饲料生产线升级设备&#xff01; 还在为饲料生产烦恼吗&#xff1f…

【笔记-MyBatis】StatementHandler

Author&#xff1a;赵志乾 Date&#xff1a;2024-07-15 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 简介 StatementHandler封装了对JDBC各类Statement的操作&#xff0c;如设置fetchSize属性、设置查询超时时间、与数据库进行交互等&…

第一节Linux常见指令

目录 1.Linux下基本指令 ls指令 pwd 命令 cd 指令 知识点:理解树形结构 touch 指令 mkdir指令(重要) rmdir指令 && rm指令(重要) 知识点:ls file* 可以找到当前目录下任何以file开头的文件​编辑 知识点:热键 man指令()重要 补充知识点:nano cp…

解锁Mac与Windows无缝协作新纪元:Tuxera NTFS for Mac 2022 —— 高效读写,畅享双系统自由

Tuxera NTFS for Mac 2022&#xff0c;作为一款专为Mac用户设计的文件系统驱动插件&#xff0c;它彻底打破了Mac与Windows之间在文件读写上的界限&#xff0c;为用户带来了前所未有的跨平台体验。 这款插件让Mac用户能够轻松访问、读取并写入NTFS格式的硬盘或U盘&#xff0c;无…

C++第七弹 -- C/C++内存管理

目录 前言一. C/C内存分布二. C语言中动态内存管理方式三. C中动态内存管理四. operator new与operator delete函数五. new和delete的实现原理1.内置类型2. 自定义类型 六. 定位new表达式(placement-new)七. 常见面试题总结 前言 在C/C编程中&#xff0c;内存管理是至关重要的…

jwt复习及ctfshow做题

Jwt复习总结 JWT简介 JWT即Json Web Token的缩写&#xff0c;顾名思义&#xff0c;是Token的一种。它常被用来在向服务器发起请求时用作身份认证。使用JWT作为身份认证的优势在于&#xff1a;它不需要在服务端去保留用户的认证信息。仅需要对该Token正确性进行校验即可,这就意…

张量分解(4)——SVD奇异值分解

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

那一单,教会我的不只是后悔

在销售行业中&#xff0c;每一笔成交都是一场精心策划的战役。每一个细节、每一次沟通都需要谨慎处理&#xff0c;以防辛苦建立的信任大厦瞬间崩塌。然而&#xff0c;即便是最小心谨慎的人也难免会犯错。我的一位好友&#xff0c;我们姑且称他为杰克&#xff0c;在一次不经意间…

实战篇(九):解锁3D魔方的秘密:用Processing编程实现交互式魔方

解锁3D魔方的秘密:用Processing编程实现交互式魔方 使用 Processing 创建一个 3D 魔方效果展示1. 安装 Processing2. 项目结构3. 代码实现4. 代码解释4.1. 初始化魔方4.2. 绘制魔方4.3. 处理鼠标事件4.4. 检查点击的面4.5. 旋转面和最终确定旋转5. 运行和测试6. 细节解释6.1. …

数据精度丢失

js数据精度丢失 最近看面试题想到了之前在开发钟遇到过的问题&#xff0c;现总结一下 在开发过程中&#xff0c;发现从后台返回的数据结构中的id字段在前端显示为不正确的值。经过排查&#xff0c;怀疑是JavaScript中Number类型精度丢失的问题。通过将id字段的类型从Number改为…

I/O多路复用:解锁服务器高性能的钥匙

文章目录 I/O 多路复用引言I/O 多路复用&#xff1a;并发处理的艺术介绍I/O多路复用的意义Linux下的I/O多路复用机制总结 文件描述符&#xff08;fd&#xff09;&#xff1a;连接的桥梁概述文件描述符的作用文件描述符的生命周期特殊的文件描述符文件描述符与I/O多路复用 套接字…