给定长度为n的数组,找出重复次数最多的元素。 重复最多的元素是出现超过⌊n /2⌋倍的元素。
您可以假设该数组非空,并且重复最多的元素始终存在于数组中。
例1:
输入:[3,2,3]
输出:3
例2:
输入:[2,2,1,1,1,2,2]
输出:2
var majorityElement = function(arr){
var num = arr[0],
count = 1
for (let i = 1; i < arr.length; i++) {
if(count===0){
num=arr[i]
}
if(num===arr[i]){
count++
}else{
count--
}
}
return num
}
var arr =[2,2,1,1,1,2,2]
majorityElement(arr)
// 2
给定一个整数数组和一个整数k,找出数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j]并且i和j之间的绝对差值最多为k。
例1:
输入:nums = [1,2,3,1],k = 3
输出:true
例2:
输入:nums = [1,0,1,1],k = 1
输出:true
例3:
输入:nums = [1,2,3,1,2,3],k = 2
输出:false
var containsNearbyDuplicate = function(arr, k){
var hashMap = {}
for(var i = 0; i < arr.length; i++) {
if(hashMap[arr[i]]!==void(0) && i - hashMap[arr[i]] <= k) {
return true
} else{
hashMap[arr[i]] = i
}
}
return false
}
var arr = [1,2,3,1], k = 3
containsNearbyDuplicate(arr, k)
//true