当前位置: 首页 > news >正文

【牛客网】JZ39 数组中出现次数超过一半的数字

题目

在这里插入图片描述

思路

思路1

将数组排序,再保证有结果的情况下,此时数组中间的数字就是想要的结果

思路2

在保证有结果的情况下,此时数组的的众数是数组长度的一半以上
所以我们可以通过抵消的做法来找到最终的结果

我们可以从头遍历这个数组,如果两个数不相同,则消去这两个数,最坏的情况下,最后就剩下一个数就是我们想要的结果

代码

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param numbers int整型一维数组 * @return int整型*/public int MoreThanHalfNum_Solution (int[] numbers) {// write code hereint result = numbers[0];int times = 1;//result用来记录此时结果的数字//times用来记录出现的次数//默认result初始值为数组第一个元素,times的值为1//遍历数组for(int i = 1; i < numbers.length; i++){//如果此时次数不为0,说明这个数字没有消除完if(times != 0){//如果此时两个相邻的数不同,则消去这个数,即times--if(numbers[i] != result){times--;//反之则说明两个数相同,此时这个数出现的次数又+1,times++}else{times++;}//如果此时times为0,则说明这个数字消除结束了}else{//此时重新制定result和timesresult = numbers[i];times = 1;}}return result;}
}
http://www.lryc.cn/news/180650.html

相关文章:

  • 【Mysql】Lock wait timeout exceeded; try restarting transaction
  • python生成中金所期权行权价
  • CentOS7.9 安装postgresql
  • qt线程介绍
  • 记一次用dataframe进行数据清理
  • 《Jetpack Compose从入门到实战》 第二章 了解常用UI组件
  • Vue3 引入使用 vant组件详解
  • NOSQL Redis Ubuntu系列 常用的配置 及密码登录
  • C语言解析GPS源数据
  • 【论文阅读】(CVPR2023)用于半监督医学图像分割的双向复制粘贴
  • [Linux 基础] 一篇带你了解linux权限问题
  • FPGA project :HDMI
  • 基于微信小程序的物流快递信息查询平台同城急送小程序(亮点:寄件、发票申请、在线聊天)
  • idea插件推荐
  • Arcgis快速计算NDVI
  • SpringCloud Alibaba - 基于 FeignClient 整合 Sentinel,实现“线程隔离”和“熔断降级”
  • Acwing 906. 区间分组
  • 阿里云 Oss 权限控制
  • CSS详细基础(六)边框样式
  • 支持向量机SVM:从数学原理到实际应用
  • 【办公自动化】在Excel中按条件筛选数据并存入新的表(文末送书)
  • 第三章:最新版零基础学习 PYTHON 教程(第十一节 - Python 运算符—Python 中的any与all)
  • Pytorch单机多卡分布式训练
  • asp.net coremvc+efcore增删改查
  • Java基础面试,什么是面向对象,谈谈你对面向对象的理解
  • Ubuntu系统初始设置
  • 焕新古文化传承之路,AI为古彝文识别赋能
  • 毛玻璃动画交互效果
  • Audio2Face的工作原理
  • 【面试题】2023前端面试真题之JS篇