• 多数元素


    此博客链接:

    多数元素

    题目链接:https://leetcode-cn.com/problems/majority-element/

    题目

    给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

    你可以假设数组是非空的,并且给定的数组总是存在多数元素。

    示例 1:

    输入:[3,2,3]
    输出:3
    示例 2:

    输入:[2,2,1,1,1,2,2]
    输出:2
     

    进阶:

    尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

    题解

     使用map,把数组中元素当成键,把数组中的元素个数当成值,再次遍历map,找值大于2/n的键是多少。

    代码

    class Solution {
        public int majorityElement(int[] nums) {
            Map <Integer,Integer> map=new HashMap();
            for(int num:nums){
                int count=map.getOrDefault(num,0)+1;
                map.put(num,count);
            }
            int min=nums.length/2;
            for(Integer temp:map.keySet())
            {
                // System.out.println(temp);
                // System.out.println(map.get(temp));
                if(map.get(temp)>min)
                {
                    return temp;
                }
            }
            return 0;
        }
    }

    结果

     只出现一次的元素

    题目链接:https://leetcode-cn.com/problems/single-number/

    题目

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    说明:

    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

    示例 1:

    输入: [2,2,1]
    输出: 1
    示例 2:

    输入: [4,1,2,1,2]
    输出: 4

    题解

    此题和上面一题的思路是一样的,使用Map来存储元素的值,元素的个数存储在value中,最后遍历Map,判断元素个数为一的元素是哪个。

    代码

    class Solution {
        public int singleNumber(int[] nums) {
            Map <Integer,Integer> map=new HashMap();
            for(Integer num:nums)
            {
                int count=map.getOrDefault(num,0)+1;
                map.put(num,count);
            }
            for(Integer temp:map.keySet())
            {
                if(map.get(temp)==1)
                {
                    return temp;
                }
            }
            return -1;
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    <cf>Square
    运算符重载
    HDU 1231 最大连续子序列
    Biorhythms(poj1006)
    友元和友元函数
    <poj 1046>Color Me Less
    <cf> Funky Numbers
    VC++中窗口的最大化问题
    励志文章,没事看一下(网上摘录)
    VC多线程编程(转)
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/15136397.html
Copyright © 2020-2023  润新知