文末
我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档
- 第一个要分享给大家的就是算法和数据结构
- 第二个就是数据库的高频知识点与性能优化
- 第三个则是并发编程(72个知识点学习)
- 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
}
var majorityElement = function(nums) {
nums.sort((a,b) => a-b);
return nums[Math.floor(nums.length/2)];
};
方法二:哈希表
遍历哈希表操作的四种方法:https://blog.csdn.net/kyi_zhu123/article/details/52769469
我们使用哈希映射(HashMap)来存储每个元素以及出现的次数。对于哈希映射中的每个键值对,键表示一个元素,值表示该元素出现的次数。
我们用一个循环遍历数组 nums 并将数组中的每个元素加入哈希映射中。在这之后,我们遍历哈希映射中的所有键值对,返回值最大的键。我们同样也可以在遍历数组 nums 时候使用打擂台的方法,维护最大的值,这样省去了最后对哈希映射的遍历。
class Solution {
public int majorityElement(int[] nums) {
Map<Integer, Integer> counts = countNums(nums);
Map.Entry<Integer, Integer> major = null;
for(Map.Entry<Integer, Integer> entry : counts.entrySet()){
if(major == null || entry.getValue() > major.getValue()){
major = entry;
}
}
return major.getKey();
}
private Map<Integer, Integer> countNums(int[] nums){
Map<Integer, Integer> counts = new HashMap<Integer, Integer>();
for(int num : nums){
if(!counts.containsKey(num)){
counts.put(num, 1);
}else{
counts.put(num, counts.get(num)+1);
}
}
return counts;
}
}
/**
-
@param {number[]} nums
-
@return {number}
*/
var majorityElement = function(nums) {
let map = new Map()
for(let i = 0; i < nums.length; i++){
if(map.has(nums[i])){
map.set(nums[i], map.get(nums[i])+1)
}else{
map.set(nums[i], 1)
分享
1、算法大厂——字节跳动面试题
2、2000页互联网Java面试题大全
3、高阶必备,算法学习
😕/bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**