乐趣区

大厂2020届实习生笔试题

编程题:
1. 输入某年某月某日,判断这一天是这一年的第几天?
// 判断是否为闰年
function isRun(a) {
return a % 4 == 0 && a % 100 != 0 || a % 400 == 0
}

// 判断是这一年的第几天
function daysNum(year,month,day) {
var months = [31,28,31,30,31,30,31,31,30,31,30,31];
if(month ==1) {
return day;
}
for(var i = 0; i < month-1; i++) {
day += months[i]
}
if(isRun(year) && month >2) {
day ++
}
return day
}
2. 寻找多数元素
设计一个方法,在一个数组中寻找占大多数的元素(如果存在的话),如果这样的元素不存在,就输出“没有元素占大多数”。
占大多数的元素的定义为:如果一个数组 A 的长度为 n,某一个元素在数组中的数量大于 n /2,这个元素即为占大多数的元素。(简单推理可知,一个数组最多有一个元素为占大多数的元素)附加要求:时间复杂度越小越好例子:输入:[3,3,4,2,4,4,2,4,4] 输出:4 // 一共 5 个 4,超过数组长度的一半 Input: [3,3,4,2,4,4,2,4,]Output: 没有元素占大多数
function SelectNum(arr) {
let len = arr.length;
var json = {};
for (let i = 0; i < len; i++) {
if (json[arr[i]] == undefined) {
json[arr[i]] = 1;
} else {
json[arr[i]] += 1
}
}
for (let a in json) {
if (json[a] > len / 2) {
return a
}
}

return ‘ 没有元素占大多数 ’
}
3.

请有缘人指点。。

退出移动版