ARTS Week 40

Algorithm 本周的算法题为 189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4] 实现代码如下: const rotate = function (nums, k) { let count = 0; if (k <= nums.length) { count = k; } else { count = k % nums.length; } const middlePart = nums.splice(nums.length - count, count); nums....

2024-09-19 · 1 分钟 · 130 字

ARTS Week 39

Algorithm 本周的算法题为 1346. 检查整数及其两倍数是否存在 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 <= i, j < arr.length arr[i] == 2 * arr[j] 示例 1: 输入:arr = [10,2,5,3] 输出:true 解释:N = 10 是 M = 5 的两倍,即 10 = 2 * 5 。 实现代码如下: const checkIfExist = function (arr) { const result = arr.map((m, i) => { const index = arr....

2024-09-18 · 1 分钟 · 112 字

ARTS Week 38

Algorithm 本周的算法题为 2432. 处理用时最长的那个任务的员工 共有 n 位员工,每位员工都有一个从 0 到 n - 1 的唯一 id 。 给你一个二维整数数组 logs ,其中 logs[i] = [idi, leaveTimei] : idi 是处理第 i 个任务的员工的 id ,且 leaveTimei 是员工完成第 i 个任务的时刻。所有 leaveTimei 的值都是 唯一 的。 注意,第 i 个任务在第 (i - 1) 个任务结束后立即开始,且第 0 个任务从时刻 0 开始。 返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,则返回几人中 最小 的 id 。 示例 1: 输入:n = 10, logs = [[0,3],[2,5],[0,9],[1,15]] 输出:1 解释: 任务 0 于时刻 0 开始,且在时刻 3 结束,共计 3 个单位时间。 任务 1 于时刻 3 开始,且在时刻 5 结束,共计 2 个单位时间。 任务 2 于时刻 5 开始,且在时刻 9 结束,共计 4 个单位时间。 任务 3 于时刻 9 开始,且在时刻 15 结束,共计 6 个单位时间。 时间最长的任务是任务 3 ,而 id 为 1 的员工是处理此任务的员工,所以返回 1 。 实现代码如下:...

2024-09-13 · 2 分钟 · 216 字

ARTS Week 37

Algorithm 本周的算法题为 1232. 缀点成线 给定一个数组 coordinates ,其中 coordinates[i] = [x, y] , [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上。 示例 1: 输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]] 输出:true 实现代码如下: const checkStraightLine = function (coordinates) { // 两点确定一条直线 if (coordinates.length < 2) { return false; } // 同一个X轴 const allEqualX = coordinates.every((item) => item[0] === coordinates[0][0]); if (allEqualX) { return true; } // 同一个Y轴 const allEqualY = coordinates.every((item) => item[1] === coordinates[0][1]); if (allEqualY) { return true; } // 对角线 const [x0, y0] = coordinates[0]; const [x1, y1] = coordinates[1]; // 斜率 const slope = (y1 - y0) / (x1 - x0); // 遍历剩余的坐标点,检查斜率是否一致 for (let i = 2; i < coordinates....

2024-08-10 · 2 分钟 · 232 字

ARTS Week 36

Algorithm 本周的算法题为 1528. 重新排列字符串 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 示例 1: 输入:s = "codeleet", indices = [4,5,6,7,0,2,1,3] 输出:"leetcode" 解释:如上图所示,"codeleet" 重新排列后变为 "leetcode" 。 实现代码如下: const restoreString = function (s, indices) { let result = ""; for (let i = 0; i < indices.length; i++) { result += s[indices.indexOf(i)]; } return result; }; 解题思路: 题目很简单,只需要遍历indices数组,对于每个遍历到的索引i,我们取出indices[i]的值,这个值直接对应了字符串s中某个字符的索引。然后,我们根据这个索引从s中取出相应的字符,并将这些字符按照indices数组的顺序依次拼接起来,形成新的字符串。 Review Chimpanzees use medicinal plants when sick - Breaking News English Lesson...

2024-07-07 · 1 分钟 · 92 字