首页 > 其他分享 >【LeeCode】169. 多数元素

【LeeCode】169. 多数元素

时间:2022-11-26 20:32:23浏览次数:57  
标签:map arr nums int 元素 majorityElement LeeCode 169 public

【题目描述】

​https://leetcode.cn/problems/majority-element/description/?favorite=2cktkvj​

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

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


【示例】

【LeeCode】169. 多数元素_数组


【代码】

package com.company;
import java.util.*;

/**
* https://leetcode.cn/problems/majority-element/?favorite=2cktkvj
*/

public class threeSum {
public static void main(String[] args) {
int[] arr = {2,2,1,1,1,2,2};
int[] arr1 = {3,2,3};
majorityElement(arr);
majorityElement(arr1);


}
public static int majorityElement(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}
int num = nums.length / 2;
List<Integer> list = new ArrayList<>();

for (Map.Entry<Integer, Integer> ent : map.entrySet()) {
if(ent.getValue() > num){
list.add(ent.getKey());
}
}
// 按题目的意思, 应该这个值只有1个
return list.get(0);
}
}


【代码2】

​学习参考​

数组统计字符数量

// 统计数量
Arrays.stream(arr).boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

// 除法 (除以2)
a.length >> 1
package com.company;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
* Arrays.stream(arr).boxed()
* .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
*/

public class threeSum {
public static void main(String[] args) {
int[] arr = {2,2,1,1,1,2,2}; // 2
int[] arr1 = {3,2,3}; // 3
majorityElement(arr);
majorityElement(arr1);
}
public static int majorityElement(int[] nums) {
Map<Integer, Long> collect = Arrays.stream(nums).boxed()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
int size = collect.size() >> 1;
for (Map.Entry<Integer, Long> entry : collect.entrySet()) {
if(entry.getValue() > size){
return entry.getKey();
}
}
return -1;
}
}

【代码3】

package com.company;
import java.util.*;

public class threeSum {
public static void main(String[] args) {
int[] arr = {2,2,1,1,1,2,2}; // 2
int[] arr1 = {3,2,3}; // 3
majorityElement(arr);
majorityElement(arr1);
}
public static int majorityElement(int[] nums) {
int size = nums.length >> 2 ;
Map<Integer, Integer> map = new HashMap<>(size);

for(int num: nums){
// map.merge(num, 1, Integer::sum);
map.merge(num, 1, (x, y) -> x + y);
}

for (Map.Entry<Integer, Integer> en : map.entrySet()) {
if(en.getValue() > size){
return en.getValue();
}
}
return -1;
}
}


【代码4】

【LeeCode】169. 多数元素_ide_02

标签:map,arr,nums,int,元素,majorityElement,LeeCode,169,public
From: https://blog.51cto.com/u_13682316/5889157

相关文章

  • 【LeeCode】229. 多数元素 II
    【题目描述】​​https://leetcode.cn/problems/majority-element-ii/description/​​给定一个大小为 n 的整数数组,找出其中所有出现超过 ​​​⌊n/3⌋​​​ 次的......
  • leetcode_D3_27移除元素
    1.题目   2.解一   主要思路:解一为本人解法,主要思路是先利用循环删除掉所有数组中值等于val的元素,然后可以直接返回数组的长度和其中的元素。感觉是没经过......
  • HTML具体元素
    HTML的标签文档的头部和主题<html><head>这里是文档的头部.........</head><body>这里是文档的主体.........</body></html> HTML标题标......
  • HTML元素
    HTML文档是由HTML元素定义的。HTML元素HTML元素指的是从开始标签(starttag)到结束标签(endtag)的所有代码。例: 开始标签元素内容结束标签<p>Thisisaparag......
  • 记一次List集合存入(null)空元素
    1问题原因误将空元素null值存入到了List集合中,导致后续的调用中出现了空指针。后续修改使用Stream过滤掉了空元素。2集合特性Java容器分为Collection和Map两大类,Coll......
  • 【LeeCode】46. 全排列
    【题目描述】​​https://leetcode.cn/problems/permutations/?favorite=2cktkvj​​给定一个不含重复数字的数组 ​​nums​​ ,返回其 所有可能的全排列 。你可以 按......
  • Java高效找出两个大数据量List集合中的不同元素
    本文将带你了解如何快速的找出两个相似度非常高的List集合里的不同元素。主要通过JavaAPI、List集合双层遍历比较不同、借助Map集合查找三种方式,以及他们之间的执行效率情......
  • 六、元素选择器
    伪元素,表示网页中一些特殊的并非真实存在的元素(特殊的位置)为元素使用::开头::first-letter表示第一个字母::first-lin表示第一行::selection表示选中的内容::be......
  • Java ArrayList移除元素相关
    @TestpublicvoidtestList(){List<String>list=newArrayList<>();list.add("1");list.add("2");for(Strings:lis......
  • UML核心元素(五)——关系
     关联关系(不同类对象之间的结构关系,描述了某个对象在一段时间内一直“知道”另一个对象的存在,如A保存了B的ID,所以为了区分相互“知道”和单向的“知道”关系,所以出现了......