ARTS Week 25

Algorithm 本周的算法题为 28. 找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "sad" 输出:0 解释:"sad" 在下标 0 和 6 处匹配。 第一个匹配项的下标是 0 ,所以返回 0 。 实现代码如下: var strStr = function(haystack, needle) { return haystack.indexOf(needle) }; 解题思路: indexOf() 方法返回数组中第一次出现给定元素的下标,如果不存在则返回-1。这道题目只是这个方法的应用而已,没有太多可以说的。 Review Climate change increases price of Easter eggs - Breaking News English Lesson 今年的复活节彩蛋价格将比去年高得多。原因是气候变化。极端的天气模式使种植可可变得更具挑战性。可可豆用于制作巧克力。全球约70%的可可豆在西非种植。加纳和科特迪瓦最近的高温、干旱和大雨大大减少了可可豆的种植量。温度比正常高四度。路透社称,与去年同期相比,可可价格已翻了一番。能源和气候分析师Amber Sawyer表示,西非农民在面对极端高温和降雨时“感到困难”。 巧克力彩蛋是基督教复活节的礼物,庆祝耶稣的复活。传统上,人们染色和绘制鸡蛋。维基百科称,巧克力彩蛋最早出现在法国路易十四的宫廷,约在1725年。1873年,英国巧克力公司J.S. Fry生产了第一个空心巧克力蛋,类似于今天人们赠送的巧克力蛋。维基百科称:“在西方文化中,赠送巧克力彩蛋现在已经司空见惯,仅在英国就售出了8000万个复活节彩蛋。”然而,气候变化正在使种植可可豆变得更加困难。气候分析师表示,如果我们希望稳定供应可可和巧克力,就需要采取更多措施减少化石燃料排放。...

2024-04-28 · 1 分钟 · 80 字

ARTS Week 24

Algorithm 本周的算法题为 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:list1 = [1,2,4], list2= [1,3,4] 输出:[1,1,2,3,4,4] 实现代码如下: /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} list1 * @param {ListNode} list2 * @return {ListNode} */ const mergeTwoLists = function(list1, list2) { if (list1 === null) { return list2; } else if (list2 === null) { return list1; } else if (list1....

2024-04-23 · 1 分钟 · 152 字

ARTS Week 23

Algorithm 本周的算法题为 1014. 最佳观光组合 给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。 一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。 返回一对观光景点能取得的最高分。 示例 1: 输入:values = [8,1,5,2,6] 输出:11 解释:i = 0, j = 2, values[i] + values[j] + i - j = 8 + 5 + 0 - 2 = 11 实现代码如下: const maxScoreSightseeingPair = function (values) { let maxValue = 0 let maxPrev = values[0] // 记录前面位置能够得到的最大得分 for (let i = 1; i < values....

2024-03-29 · 1 分钟 · 171 字

ARTS Week 22

Algorithm 本周的算法题为 665. 非递减数列 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。 示例 1: 输入: nums = [4,2,3] 输出: true 解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。 示例 2: 输入: nums = [4,2,1] 输出: false 解释: 你不能在只改变一个元素的情况下将其变为非递减数列。 实现代码如下: const checkPossibility = function (nums) { // 如果数组只有一个元素,则直接返回true if (nums.length === 1) { return true } let index = -1 for (let i = 0; i < nums....

2024-03-20 · 1 分钟 · 209 字

ARTS Week 21

Algorithm 本周的算法题为 565. 数组嵌套 索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以下的规则。 假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]... 以此类推,不断添加直到S出现重复的元素。 示例 1: 输入: A = [5,4,0,3,1,6,2] 输出: 4 解释: A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2. 其中一种最长的 S[K]: S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0} 实现代码如下: const arrayNesting = function (nums) { // 使用visited数组来记录访问过的元素 let visited = new Array(nums....

2024-03-13 · 1 分钟 · 179 字