概述
1.去掉最低工资和最高工资后的平均值
题目:
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。
请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。
思路:排序,或者用两个变量记录
/**
* @param {number[]} salary
* @return {number}
*/
var average = function(salary) {
let min = salary[0];
let max = salary[0];
const l = salary.length;
let sum = salary[0];
for (let i = 1; i < l; i++) {
sum += salary[i];
min = min < salary[i] ? min : salary[i];
max = max > salary[i] ? max : salary[i];
}
return (sum - min - max) / (l - 2);
};
2.转变日期格式
题目:
给你一个字符串 date ,它的格式为 Day Month Year ,其中:
Day 是集合 {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"} 中的一个元素。
Month 是集合 {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} 中的一个元素。
Year 的范围在 [1900, 2100] 之间。
请你将字符串转变为 YYYY-MM-DD 的格式,其中:
YYYY 表示 4 位的年份。
MM 表示 2 位的月份。
DD 表示 2 位的天数。
思路:先将字符串分割为数组,day是提取数字。month是数组下标+1,年是原值
/**
* @param {string} date
* @return {string}
*/
var reformatDate = function(date) {
const list = date.split(" ");
const month = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
];
let m = (month.findIndex((i) => i === list[1]) + 1).toString();
if (m.length < 2) {
m = `0${m}`;
}
let d = list[0].replace(/[a-z]/g, "");
if (d.length < 2) {
d = `0${d}`;
}
const y = list[2];
return [y, m, d].join("-");
};
3.好数对的数目
题目:
给你一个整数数组 nums 。
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
返回好数对的数目。
思路:遍历字符串,并记录字符出现的次数。如果某个字符之前出现过n次,那么对于当前字符,好数对会增加n
/**
* @param {number[]} nums
* @return {number}
*/
var numIdenticalPairs = function(nums) {
let res = 0;
const map = new Map();
for (const n of nums) {
if (map.get(n)) {
res += map.get(n);
map.set(n, map.get(n) + 1);
} else {
map.set(n, 1);
}
}
return res;
};
4.换酒问题
题目:
小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。
如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。
请你计算 最多 能喝到多少瓶酒。
思路:记录当前的瓶子数,如果瓶子数>numExchange,那么继续兑换,否则返回结果
/**
* @param {number} numBottles
* @param {number} numExchange
* @return {number}
*/
var numWaterBottles = function(numBottles, numExchange) {
let c = numBottles;
while (c >= numExchange) {
const v = ~~(c / numExchange);
numBottles += v;
c %= numExchange;
c += v;
}
return numBottles;
};
5.统计好三元组
题目:
给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。
如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。
0 <= i < j < k < arr.length
|arr[i] - arr[j]| <= a
|arr[j] - arr[k]| <= b
|arr[i] - arr[k]| <= c
其中 |x| 表示 x 的绝对值。
返回 好三元组的数量 。
思路:暴力,循环求解
/**
* @param {number[]} arr
* @param {number} a
* @param {number} b
* @param {number} c
* @return {number}
*/
var countGoodTriplets = function(arr, a, b, c) {
let res = 0;
const l = arr.length;
for (let i = 0; i < l - 2; i++) {
for (let j = i + 1; j < l - 1; j++) {
if (Math.abs(arr[i] - arr[j]) <= a) {
for (let k = j + 1; k < l; k++) {
if (Math.abs(arr[i] - arr[k]) <= c && Math.abs(arr[j] - arr[k]) <= b)
res++;
}
}
}
}
return res;
};
最后
以上就是专注香烟为你收集整理的js解leetcode(49)-简单的全部内容,希望文章能够帮你解决js解leetcode(49)-简单所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复