题目链接:majority-element

/**
*
Given an array of size n, find the majority element.
The majority element is the element that appears more than ⌊ n/2 ⌋ times. You may assume that the array is non-empty and the majority element always exist in the array.
*
*/
public class MajorityElement { // 40 / 40 test cases passed.
// Status: Accepted
// Runtime: 253 ms
// Submitted: 1 minute ago //时间复杂度为 O(n), 空间复杂度为 O(1) //因为最多的那个元素占一半及以上, 故能够和别的元素相互抵消,最后剩下的未抵消掉的元素为所求
//将数组分成三块:num[0...i]为 归并的 还未抵消的数组。 num[i+1...j-1]空暇区, num[j...num.length-1]为等待抵消的数组
//抵消规则:若num[i] = num[j] 则把num[j]归入num[0...i+1]数组中
// 若num[i] != num[j] 则把num[i] 抵消掉 然后 i-- static int majorityElement(int[] num) { int i = -1; for (int j = 0; j < num.length; j++) { if(i == -1) num[++i] = num[j];
else {
if(num[j] == num[i]) num[ ++i] = num[j];
else i --;
} }
return num[0];
}
public static void main(String[] args) { System.out.println(majorityElement(new int[]{4}));
System.out.println(majorityElement(new int[]{4, 4, 5}));
System.out.println(majorityElement(new int[]{4, 3, 3}));
System.out.println(majorityElement(new int[]{4, 3, 4}));
} }

最新文章

  1. 使用SVG绘制湖南地图
  2. Oracle trunc()函数的用法
  3. 轻松搭建Unity3D 安卓Android开发环境
  4. CentOS7 SSH相关
  5. 在CentOS 7 上安装广告服务器 Revive Adserver
  6. 转载php在IIS中运行
  7. [转] iOS (OC) 中 KVC 与 KVO 理解
  8. Embedded Linux Primer----嵌入式Linux基础教程--章节介绍
  9. Python之路【第三篇】:模块
  10. 1.Java集合总结系列:Java集合概述
  11. C#泛型简单应用
  12. [Swift]LeetCode925. 长按键入 | Long Pressed Name
  13. Log4j的扩展RollingFileAppender、DailyRollingFileAppender
  14. jqgrid again
  15. hdu6273 线性差分
  16. Linux rsync同步
  17. [js] - 前端FileReader使用,适用于文件上传预览.(并未传入后端)
  18. 使用thinkphp框架实现Excel导入数据库
  19. Thinkphp 3.1. 3 ueditor 1.4.3 添加水印
  20. nginx在使用非80端口做反向代理【转】

热门文章

  1. 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
  2. Android 嵌套GridView,ListView只显示一行的解决办法
  3. linux下查看硬件配置的相关命令
  4. CMDB反思2
  5. maven学习系列第二课,关于springmvc的pop.xml的依赖的添加
  6. linux中配置桥接网络,让虚拟机能够上网
  7. linux下配置双网卡及RAC规划——1
  8. 机器学习&mdash;&mdash;Logistic回归
  9. 判断线段和直线相交 POJ 3304
  10. Tkinter教程之Event篇(2)