博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----229. Majority Element II
阅读量:4113 次
发布时间:2019-05-25

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

链接:

大意:

给定一个整数数组nums,要求找出数组中出现次数超过nums.length / 3次的所有数字。规定:使用时间复杂度为O(n),空间复杂度为O(1)的方法解决。例子:

思路:

全军覆没。思路参考链接:

代码:

class Solution{    public List
majorityElement(int[] nums) { List
resultList=new ArrayList<>(); if (nums == null || nums.length == 0){ return resultList; } //初始化,定义两个候选人以及对应的票数 int candidateA=nums[0]; int candidateB=nums[0]; int countA=0; int countB=0; // 遍历数组 for (int num:nums){ if (num==candidateA){ //投A countA++; continue; } if (num==candidateB){// 投B countB++; continue; } //此时A,B都不投,检查是否有票数为0情况,如果为0,则更新候选人 if (countA==0){ candidateA=num; countA++; continue; } if (countB==0){ candidateB=num; countB++; continue; } //此时两个候选人的票数都大于1,且当前选名不投AB,那么A,B对应的票数都要--; countA--; countB--; } // 上一轮遍历找出了两个候选人,但是这两个候选人是否均满足票数大于N/3仍然没法确定,需要重新遍历,确定票数 countA=0; countB=0; for (int num:nums){ if (num==candidateA){ countA++; }else if (num==candidateB){ countB++; } } if (countA > nums.length/3){ resultList.add(candidateA); } if (countB > nums.length/3){ resultList.add(candidateB); } return resultList; }}

结果:

结论:

好菜啊 

 

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

你可能感兴趣的文章
看到一篇文章讲ios的动画, 比较齐全,转过来, UIViewAnimation动画与CATransition类动画
查看>>
iOS5新特性:强大的Core Image(教你做自己的美图秀秀))
查看>>
iPhone开发中的技巧整理
查看>>
为iOS App增加启动渐变效果
查看>>
如何保持注意力
查看>>
人类始终无法抗拒的十种心理
查看>>
教你如何做面霸--面试题目及考察要点
查看>>
通过这些小细节看清你身边的人
查看>>
要么让自己痛苦,要么让自己强大
查看>>
六十秒快速乐观法
查看>>
GCD 集中与iOS的多核编程和内存管理
查看>>
iOS常用加密方法(aes、md5、base64)
查看>>
Grad Central Dispatch
查看>>
NSValue包装结构体,存取于NSArray中
查看>>
世界排名前十的电影
查看>>
iphone开发中的一些小技巧
查看>>
iOS编程安全之路-RSA签名与验签
查看>>
<iOS>关于viewWithTag的一点说明
查看>>
<iOS>关于自定义description的一点用法
查看>>
Unix 命令,常用到的
查看>>