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

Java-查找数组众数:众数出现次数超过n/2次,n为数组长度

Java-查找数组众数:众数出现次数超过n/2次,n为数组长度

1、题目描述

 

2、代码实现:


import java.util.Scanner;

public class Main3 {

	/**
	 * @param args
	 *            查找数组众数,数组中数字出现次数超过n/2的数为众数,且假设数组非空且一定存在众数;n为数组长度
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		String s = in.nextLine().trim();
		String strs[] = s.substring(1, s.length() - 1).split(",");
		int nums[] = new int[strs.length];
		for (int i = 0; i < strs.length; i++) {
			nums[i] = Integer.parseInt(strs[i]);
		}
		// 快排实现,当排好一个枢纽值时,判断下标是否等于strs.length / 2,是则就是该值,结束返回输出即可;
		// 根据上面众数的定义,可知数组中间的数一定是众数;
		find_k(strs.length / 2, nums, 0, strs.length - 1);

	}

	public static int partition(int[] arr, int low, int high) {
		int temp = arr[low];
		while (low < high) {
			while (arr[high] <= temp && high > low)
				--high;
			arr[low] = arr[high];
			while (arr[low] >= temp && low < high)
				++low;
			arr[high] = arr[low];
		}
		arr[high] = temp;
		return high;
	}

	public static void find_k(int k, int[] arr, int low, int high) {
		int temp = partition(arr, low, high);
		if (temp == k) {
			System.out.print(arr[temp]);
			return;
		} else if (temp > k - 1) {
			find_k(k, arr, low, temp - 1);
		} else {
			find_k(k - temp, arr, temp + 1, high);
		}
	}

}

 

相关文章:

  • java 错误:The type java.util.Comparator cannot be resolved. It is indirectly referenced from required
  • 错误:Could not find main class : test.test.Program will exit
  • VTK-java版本-连续渐变的颜色映射表设置
  • Windows-64位环境下载并安装Python3.5.4
  • Windows -64 安装python3.5.2
  • 下载并安装Anaconda
  • Windows下安装TensorFlow教程(cpu版本)
  • VS2015下载地址-镜像文件
  • VS2015安装教程
  • 查看Windows下TensorFlow对python版本的要求
  • 查看本机显卡配置是否支持安装gpu版本的tensorflow
  • cuda安装教程+cudnn安装教程
  • Win10下安装tensorflow教程(cpu版本和GPU版本)
  • Windows10 -64 安装tensorflow遇到的:cuda安装后找不到安装文件目录
  • 使用命令查看电脑GPU配置
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2019年如何成为全栈工程师?
  • egg(89)--egg之redis的发布和订阅
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • ES学习笔记(12)--Symbol
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • mysql中InnoDB引擎中页的概念
  • spring学习第二天
  • vuex 学习笔记 01
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 前端自动化解决方案
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 在Unity中实现一个简单的消息管理器
  • 树莓派用上kodexplorer也能玩成私有网盘
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #HarmonyOS:Web组件的使用
  • #考研#计算机文化知识1(局域网及网络互联)
  • ${ }的特别功能
  • (13):Silverlight 2 数据与通信之WebRequest
  • (27)4.8 习题课
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三)模仿学习-Action数据的模仿
  • (万字长文)Spring的核心知识尽揽其中
  • (转)Google的Objective-C编码规范
  • .Net Web窗口页属性
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET开发不可不知、不可不用的辅助类(一)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • ??在JSP中,java和JavaScript如何交互?
  • [Android] Upload package to device fails #2720
  • [BUUCTF 2018]Online Tool
  • [C#]winform部署yolov5-onnx模型
  • [Contest20180313]灵大会议
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [Google Guava] 2.1-不可变集合