LeetCode(三)HashMap169. Majority Element&350. Intersection of Two Arrays II
来源:互联网 发布:域名交易流程 编辑:程序博客网 时间:2024/06/05 03:59
169. 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.
题目解法如下,使用HashMap
import java.util.*;public class Solution { public int majorityElement(int[] nums) { Map<Integer,Integer>m=new HashMap<>(); for(int i=0;i<nums.length;i++){ if(!m.containsKey(nums[i])){ m.put(nums[i],1); } else{ m.put(nums[i],m.get(nums[i])+1); } if(m.get(nums[i])>nums.length/2) return nums[i]; } return 0; }}
350. Intersection of Two Arrays II
题目要求如下
Given two arrays, write a function to compute their intersection.
Example: Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].
Note: Each element in the result should appear as many times as it
shows in both arrays. The result can be in any order.Follow up:
What if the given array is already sorted? How would you optimize your algorithm?
What if nums1’s size is small compared to nums2’s size?
Which algorithm is better? What if elements of nums2 are stored on
disk, and the memory is limited such that you cannot load all elements into the memory at once?
题目解法如下
public class Solution { public int[] intersect(int[] nums1, int[] nums2) { HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); ArrayList<Integer> result = new ArrayList<Integer>(); for(int i = 0; i < nums1.length; i++) { if(map.containsKey(nums1[i])) map.put(nums1[i], map.get(nums1[i])+1); else map.put(nums1[i], 1); } for(int i = 0; i < nums2.length; i++) { if(map.containsKey(nums2[i]) && map.get(nums2[i]) > 0) { result.add(nums2[i]); map.put(nums2[i], map.get(nums2[i])-1); } } int[] r = new int[result.size()]; for(int i = 0; i < result.size(); i++) { r[i] = result.get(i); } return r; } }
两题都使用HashMap进行求解,HashMap可以很高效地进行存取键值对
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。
当两个不同的键对象的hashcode相同时会发生什么? 它们会储存在同一个bucket位置的链表中。键对象的equals()方法用来找到键值对。
参考:原文链接: Javarevisited
翻译:Importnew-唐小娟
译文链接: http://www.importnew.com/7099.html
- LeetCode(三)HashMap169. Majority Element&350. Intersection of Two Arrays II
- LeetCode 350. Intersection of Two Arrays II
- leetcode.350. Intersection of Two Arrays II
- [leetcode] 350. Intersection of Two Arrays II
- Leetcode 350. Intersection of Two Arrays II
- leetcode 350. Intersection of Two Arrays II
- Leetcode 350. Intersection of Two Arrays II
- [leetcode] 350. Intersection of Two Arrays II
- leetcode 350. Intersection of Two Arrays II
- 【leetcode】350. Intersection of Two Arrays II
- [Leetcode] 350. Intersection of Two Arrays II
- 【leetcode】350. Intersection of Two Arrays II
- LeetCode 350. Intersection of Two Arrays II
- LeetCode - 350. Intersection of Two Arrays II
- LeetCode 350. Intersection of Two Arrays II
- leetcode 350. Intersection of Two Arrays II
- leetcode-350. Intersection of Two Arrays II
- leetcode 350. Intersection of Two Arrays II
- Poj3070 Fibonacci (矩阵快速幂)
- 在CentOS7上部署OpenStack 步骤详解
- BZOJ.1036 [ZJOI2008]树的统计Count ( 点权树链剖分 线段树维护和与最值)
- UVA1635IrrelevantElement
- Scala基础入门(七)方法、类、对象详解
- LeetCode(三)HashMap169. Majority Element&350. Intersection of Two Arrays II
- tensorflow将训练好的模型freeze,即将权重固化到图里面,并使用该模型进行预测
- Mybatis从入门到精通 (二)
- 无人超市不便宜 一包棒棒糖比传统超市贵5.7元
- HDU 6112 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛
- 面试试题简析之综合分析现象类(1)
- 求最大公约数的不同解法
- Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能
- 学习方法推荐——快速阅读