ARTS Week 30

Algorithm 本周的算法题为 747. 至少是其他数字两倍的最大数 给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。 示例 1: 输入:nums = [3,6,1,0] 输出:1 解释:6 是最大的整数,对于数组中的其他整数,6 至少是数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。 实现代码如下: const dominantIndex = function (nums) { const sortedNums = nums.toSorted((a, b) => a - b); if (sortedNums[sortedNums.length - 1] >= sortedNums[sortedNums.length - 2] * 2) { return nums.indexOf(sortedNums[sortedNums.length - 1]); } else { return -1; } } 解题思路:...

2024-05-19 · 1 分钟 · 94 字

ARTS Week 29

Algorithm 本周的算法题为 2413. 最小偶倍数 给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。 示例 1: 输入:n = 5 输出:10 解释:5 和 2 的最小公倍数是 10 。 实现代码如下: const smallestEvenMultiple = function (n) { if (n >= 2 && n % 2 == 0) { return n } if (n % 2 != 0) { return n * 2 } }; 解题思路: 两个数中一个数是另一个数的倍数,则较大的数就是它们的最小公倍数。 两个数是相邻的自然数或是两个不同的质数,则它们的乘积就是最小公倍数。 通过取余(%)运算符实现即可。 Review Chechnya bans music that is too slow or too fast - Breaking News English Lesson...

2024-05-18 · 1 分钟 · 117 字

ARTS Week 28

Algorithm 本周的算法题为 498. 对角线遍历 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1: 输入:mat = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,4,7,5,3,6,8,9] 实现代码如下: var findDiagonalOrder = function(mat) { if (mat.length === 0) return []; const m = mat.length; const n = mat[0].length; const result = []; let row = 0, col = 0, d = 1; for (let i = 0; i < m * n; i++) { result.push(mat[row][col]); row -= d; col += d; if (row >= m) { row = m - 1; col += 2; d = -d; } if (col >= n) { col = n - 1; row += 2; d = -d; } if (row < 0) { row = 0; d = -d; } if (col < 0) { col = 0; d = -d; } } return result; }; 解题思路:...

2024-05-17 · 1 分钟 · 194 字

ARTS Week 27

Algorithm 本周的算法题为 58. 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s = "Hello World" 输出:5 解释:最后一个单词是“World”,长度为 5。 实现代码如下: var lengthOfLastWord = function (s) { const result = s.split(' ').filter((item) => item !== ''); return result[result.length - 1].length }; 解题思路: 只是通过空格切割字符串变成数组,然后过滤掉空字符串,即全部单词的数组,再取数组最后一个值的长度,即为所求值。 Review Gmail celebrates its 20th birthday - Breaking News English Lesson 这家全球使用率最高的电子邮件提供商周一迎来了20岁生日。Gmail 于 2004 年 4 月 1 日推出。当时,它是革命性的,因为它提供了大量的存储空间,而且是免费的。有些人认为这是一个骗局,因为它是在愚人节宣布的。然而,这不是开玩笑。Gmail 免费提供了 1 GB 的巨大存储空间。许多其他提供商仅提供 15 兆字节。起初,人们只有在收到邀请后才能注册 Gmail。它成为技术爱好者的“必备”工具。Gmail成功的另一个原因是它搜索邮件的速度比当时的任何其他电子邮件服务都快。它在过滤垃圾邮件方面也更好。 自 2004 年以来,Gmail 已成为全球最大的电子邮件提供商。超过 17 亿人使用它。这占世界人口的20%。在美国,大约45%的电子邮件用户使用它。多年来,谷歌已将其免费存储空间增加到 15 GB,并添加了许多新功能。其中之一是一键式取消订阅按钮,可将不需要的邮件拒之门外。另一个功能是“撤消发送”按钮。这允许用户在单击“发送”后停止发送邮件。PC Mag网站称,Gmail是当今生活的重要组成部分。它写道:“Gmail已经融入了这么多人的生活中,几乎没有人对此有太多想法。人们很可能会永远使用它。...

2024-05-10 · 1 分钟 · 99 字

ARTS Week 26

Algorithm 本周的算法题为 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 实现代码如下: function searchInsert(nums, target) { let left = 0; let right = nums.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (nums[mid] === target) { return mid; } else if (nums[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return left; // 如果没有找到目标值,返回 left } 解题思路:...

2024-05-09 · 1 分钟 · 144 字