我是靠谱客的博主 专注香烟,最近开发中收集的这篇文章主要介绍js解leetcode(49)-简单,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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)-简单所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部