interview17.10 主要元素

1.题目

数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。

2.算法

3.排序算法 + 计数器

解题思路:从题干分析,我们需要找到数组中数量占比多于一半(numsSize % 2 + 1)的数字。由于数字是随机的并且取值范围较大,因此不适合使用桶计数。可以先将数组进行排序,然后遍历一遍数组,统计每种数字的数量,如果数量多于一半,就输出当前的数据即可。

步骤1:使用qsort排序。初始化一个统计变量count

步骤2:从数组左端开始遍历,检查当前数字nums[i]与上一个数字nums[i - 1]之间的关系

步骤3:若nums[i] != nums[i - 1]。统计count是否多于一半,如果多于一半则输出nums[i - 1]。如果少于一半,则count清为1。

步骤4:若nums[i] == nums[i - 1]。count自增1。

int sort_up(const void *a, const void *b)
{return *(int *)a - *(int *)b;
}int majorityElement(int* nums, int numsSize){if (numsSize == 1)return *nums;int count = 1;qsort(nums, numsSize, sizeof(int), sort_up);for(int i = 1; i < numsSize; i++) {if (nums[i] == nums[i - 1])count++;elsecount = 1;if (count > numsSize % 2)return nums[i];}return -1;
}

【interview17.10】 主要元素:详解相关推荐

  1. OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

    OpenCV-Python实战(10)--详解 OpenCV 轮廓检测 0. 前言 1. 轮廓介绍 2. 轮廓检测 3. 轮廓压缩 4. 图像矩 4. 1 一些基于矩的对象特征 4.2 Hu 不变矩 ...

  2. I2C从地址之7位,8位和10位详解

    IIC/I2C从地址之7位,8位和10位详解 概述 经常有用户问我,使用USB2XXX的USB2IIC功能的时候,从机地址应该怎么传递的问题,这个问题的根源在于不同的I2C从机厂商采用了不同的I2C总 ...

  3. OWASP top 10漏洞详解

    一.写在前边   临近毕业,最近在找实习单位,看到好多招聘要求熟悉owasp top 10 安全漏洞,于是在经过一番查资料,终于有了大致的了解,为了加深印象,特意通过博客记录一下,也希望为有同样需求的 ...

  4. redhat7.1安装mysql_redhat7.1 安装mysql 5.7.10步骤详解(图文详解)

    在redhat下安装MySQL,步骤如下 Mysql目录安装位置:/usr/local/mysql 数据库保存位置:/data/mysql 日志保存位置:/data/log/mysql 下载安装包 h ...

  5. 3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】

    十一休假,杭州西湖边逛了一圈只能用人山人海来形容,浙大紫金港校区也逛了一圈风景如画,建设得真不错很棒,假期就去了这2个地方,然后在家里陪老婆.看孩子.洗尿布.打了几局星际争霸,在网上接了一个B/S架构 ...

  6. 【4.10 博弈论详解】

    更好的阅读体验 \color{red}{更好的阅读体验} 更好的阅读体验 目录 4.10 博弈论 4.10.1 Nim 游戏 4.10.2 台阶-Nim 游戏 4.10.3 集合-Nim 游戏 4.1 ...

  7. IIC从地址之7位,8位和10位详解

    7位寻址 在7位寻址过程中,从机地址在启动信号后的第一个字节开始传输,该字节的前7位为从机地址,第8位为读写位,其中0表示写,1表示读. 图1:7位寻址.I2C总线规范规定,标准模式I2C,从机地址为 ...

  8. 网络安全入门必知的OWASP top 10漏洞详解

    0.OWASP Top10是什么? 首先介绍下OWASP,开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个非营利组织,不附属 ...

  9. 10分钟详解:算法面试5大必考排序方式

    来源:IT技术思维原创,转载请注明原出处 内容提供:苏勇, Google 资深软件工程师 算法学习其实是一种学习和提高思维能力的过程.无论是在面试还是实际的工作和生活中,都会碰见一些从没遇到过的问题 ...

  10. SAP HANA解决方案设计10问详解

    https://www.toutiao.com/a6674578205040443907/ SAP是全球最大的企业软件供应商,提供包括ERP.SRM.BI等在内的企业级应用软件.而HANA(High ...

最新文章

  1. Ceph分布式存储实战2.4 本章小结
  2. 【译】Using Objects to Organize Your Code
  3. socketserver 源码浅读
  4. 牛客网【每日一题】4月29日题目精讲 Symmetric Matrix
  5. Mysql处理海量数据时的一些优化查询速度方法
  6. java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)
  7. 网络工程师成长日记382-西部数据Juniper网络设备调试
  8. Linux使用socket选项的定时器
  9. Java代理(Proxy)模式
  10. 123D画一个产品外壳3d图给3d打印机打印完整流程
  11. 用Python实现从Oracle到GreenPlum的表结构转换
  12. 三坐标测量软件DMIS语句解释
  13. 七夕界的浪漫之光,向你安利程序员的表白方式
  14. 微信开放平台开发常见错误(长期更新)
  15. 标准差分母是n和n-1的区别(有偏估计与无偏估计)
  16. Python学习:choice()与choices()、sample()的区别
  17. GBU610-ASEMI智能家居整流桥GBU610
  18. 使用charles map remote host
  19. 英文,数字和中文混合的彩色验证码实现
  20. 计算机图形学 实验7 《复杂图形绘制-Bezier曲线与Hermite曲线》

热门文章

  1. 标记 (TAG) 您的 k8s 集群资源
  2. 如何在Kubernetes集群动态使用 NAS 持久卷 1
  3. 痛!做C#半年,挣的不如做AI1个月?”看到第二句泪目……
  4. OPPO 正式发布 ColorOS 7,“轻”装上阵带来多项亮眼新功能……
  5. 漫画:五分钟看懂车联网
  6. android 创建文件夹_Android 动画小记
  7. 电脑编程教学_东莞沙田mastercam编程学习怎么收费
  8. java 两个sql文_Java和SQL取两个字符间的值
  9. oracle 数据库_操作事项_05
  10. Access中编写VBA代码时,如何区分、使用“.”和“!”