博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
子数组中最大出现次数最多的元素(Leedcode1157)
阅读量:3959 次
发布时间:2019-05-24

本文共 2268 字,大约阅读时间需要 7 分钟。

子数组中最大出现次数最多的元素(Leedcode1157)

1.线段树(超时未通过,我不知道哪里有问题)

class MajorityChecker {    int[] arr;    int tree[];    public MajorityChecker(int[] arr) {        this.arr = arr;        this.tree = new int[100000];    }    public int query(int left, int right, int threshold) {        Map
map =new HashMap<>(); update(0,left,right,arr[left]); map.put(arr[left],1); if(tree[0]>=threshold) { return arr[left]; } for(int i=left+1;i<=(left+right)/2;i++) { if(map.get(arr[i])==null) { update(0,left,right,arr[i]); map.put(arr[i],1); if(tree[0]>=threshold) return arr[i]; } } return -1; } //将树节点的值改为当前节点对应包含的值num出现的次数 public void update(int node,int left, int right,int num) { if(left==right) { if(arr[left]==num) tree[node]=1; else { tree[node]=0; } } else { int left_node = node * 2 + 1; int right_node = node * 2 + 2; int middle = (left + right) / 2; update(left_node, left, middle, num); update(right_node, middle + 1, right, num); tree[node] = tree[left_node] + tree[right_node]; } }}

摩尔投票算法(复杂度很高但好理解,通过)

class MajorityChecker {
int[] arr; int num[]; public MajorityChecker(int[] arr) {
this.arr = arr; } public int query(int left, int right, int threshold) {
num = new int[20001]; int temp = majorityNumber(arr,left,right,num); int count = num[temp]; if(count>=threshold) return temp; else return -1; } public int majorityNumber(int arr[], int left, int right,int num[]) {
int temp = arr[left],count =0; for(int i=left;i<=right;i++) {
if(count==0) {
temp = arr[i]; count++; } else {
if(arr[i]!=temp) count--; else count++; } num[arr[i]]++; } return temp; }}

在这里插入图片描述

捂脸/捂脸

转载地址:http://kplzi.baihongyu.com/

你可能感兴趣的文章
[杂记] 流量统计 & 短信接口
查看>>
[中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用
查看>>
[设计] 原型界面设计利器 Balsamiq Mockups 推荐
查看>>
[闲话] 在西方的程序员眼里,东方的程序员是什么样的
查看>>
[管理] 成功之路的探寻 —— “三力” 理论
查看>>
[连载] Socket 深度探索 4 PHP (一)
查看>>
[无线] Android 系统开发学习杂记
查看>>
[无线] 浅析当代 LBS 技术
查看>>
[杂感] 缅怀乔布斯
查看>>
[无线] 让Android支持cmwap上网
查看>>
[无线] AndroidManifest.xml配置文件详解
查看>>
[移动] Mosquitto简要教程(安装/使用/测试)
查看>>
[HTML5] 关于HTML5(WebGL)的那点事
查看>>
自我反思
查看>>
初识网络编程
查看>>
东北赛选拔教训
查看>>
hash
查看>>
涨姿势了:求两个分子的最大公倍数
查看>>
快速幂
查看>>
vector.reserve and resize &&vector与map结合
查看>>