[关闭]
@XQF 2018-03-07T22:56:02.000000Z 字数 860 阅读 1513

如何找出数组中重复次数最多的元素?

数据结构与算法


[TOC

1.空间换时间

但是基本不这样考虑,因为不知道给出的数具体有多大,。,。假如是1000000000,。,

2.map映射应该最直白的了

  1. public class Solution {
  2. public int findMostFrequenceyInArray(int[] nums) {
  3. if (nums == null || nums.length == 0) {
  4. return 0;
  5. }
  6. Map<Integer, Integer> map = new HashMap<>();
  7. for (int i = 0; i < nums.length; i++) {
  8. Set<Integer> keySet = map.keySet();
  9. if (!keySet.contains(nums[i])) {
  10. map.put(nums[i], 1);
  11. } else {
  12. map.put(nums[i], map.get(nums[i]) + 1);
  13. }
  14. }
  15. //遍历map,之前不怎么用
  16. Iterator iterator = map.entrySet().iterator();
  17. int max = 0;
  18. int result = 0;
  19. while (iterator.hasNext()) {
  20. Map.Entry entry = (Map.Entry) iterator.next();
  21. int key = (int) entry.getKey();
  22. int value = (int) entry.getValue();
  23. System.out.println("key: " + key + " " + "value: " + value);
  24. if (value > max) {
  25. max = value;
  26. result = key;
  27. }
  28. }
  29. return result;
  30. }
  31. public static void main(String[] args) {
  32. Solution solution = new Solution();
  33. int[] nums = {1, 1, 1, 2, 3, 3, 3, 3, 3, 4, 4};
  34. System.out.println(solution.findMostFrequenceyInArray(nums));
  35. }
  36. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注