• 【leetcode刷题笔记】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.


    题解:设置两个变量,一个是current,初始化为A[0];另一个是count,记录current这个元素当前为止出现的次数。然后遍历A,如果当前元素和current相等,则count加1;否则,看count是否为0,如果count已经为0,就直接把current赋值成当前元素;如果count不为0,就把count减一即可。

    这个思路的根本就是找不相等的元素配对,如果有两个不相等的元素,就把他们两个抵消,那么最后没有抵消掉的那个元素,就是出现次数超过⌊ n/2 ⌋的。

    JAVA版本代码:

     1 public class Solution {
     2     public int majorityElement(int[] num) {
     3         int current = num[0];
     4         int count = 0;
     5         for(int i = 1;i < num.length;i++){
     6             if(current == num[i])
     7                 count++;
     8             else{
     9                 if(count >0){
    10                     count--;
    11                 }else {
    12                     current = num[i];
    13                 }
    14             }
    15         }
    16         return current;
    17     }
    18 }
  • 相关阅读:
    while循环
    三元运算符
    switch用法
    if判断
    位运算
    逻辑运算符
    赋值运算符和比较运算符
    算术运算符
    数据类型的转换
    线程同步之(条件变量)
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/4381388.html
Copyright © 2020-2023  润新知