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 人类自史前时代起便开始使用药用植物,至今全球各地仍在使用传统草药。科学家首次发现黑猩猩也会寻找森林中的果实来为自己治病。英国牛津大学的研究人员在乌干达的布东戈中央森林保护区对黑猩猩的行为进行了研究。研究人员跟踪了一只手部受伤的黑猩猩,发现它在寻找一种蕨类植物的叶子。这种蕨类植物可能具有减轻黑猩猩手部肿胀的功效。另一只患有寄生虫感染的黑猩猩则寻找猫棘树的树皮,这有助于缓解它的病情。 研究团队表示,黑猩猩的疾病和受伤情况与它们所食用的植物的药用特性之间存在很强的相关性。研究人员测试了不属于黑猩猩正常饮食的植物提取物,发现88%的提取物具有抗菌特性,33%的提取物具有抗炎特性。研究员兼人类学家艾洛蒂·弗雷曼博士表示:“药理学研究结果表明,布东戈的黑猩猩会食用多种具有强大药用特性的植物。”她说,她的团队对灵长类动物行为的研究可能为我们在生活中更广泛地使用自然疗法铺平道路。 Tip 在Vue Next项目开发过程中,我们需要调试一些鼠标悬停才会出现的元素,比如Element Plus 里的 <el-dropdown> 组件,如要修改它下拉菜单的背景色,可使用鼠标悬停显示下拉框,然后按下快捷键 Ctrl + Shift + C 触发视图查看,再点击下拉框即可获取Class名称进行修改,如下所示: Share 每个人所要追求的东西并不一样,没必要强人所难,说过一两次就够了,平常心对待,说到底,只不过一份工作而已,承载不了太多的东西。

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

ARTS Week 35

Algorithm 本周的算法题为 3114. 替换字符可以得到的最晚时间 给你一个字符串 s,表示一个 12 小时制的时间格式,其中一些数字(可能没有)被 "?" 替换。 12 小时制时间格式为 "HH:MM" ,其中 HH 的取值范围为 00 至 11,MM 的取值范围为 00 至 59。最早的时间为 00:00,最晚的时间为 11:59。 你需要将 s 中的 所有 "?" 字符替换为数字,使得结果字符串代表的时间是一个 有效 的 12 小时制时间,并且是可能的 最晚 时间。 返回结果字符串。 示例 1: 输入: s = "1?:?4" 输出: "11:54" 解释: 通过替换 "?" 字符,可以得到的最晚12小时制时间是 "11:54"。 实现代码如下: const findLatestTime = function (timeString) { let result = ""; let replacementDigits = ["1", "9", "0", "5", "9"]; for (let i = 0; i < timeString.length; i++) { let char = timeString[i]; if (char === "?") { char = replacementDigits[i]; } result += char; } let sub = result.substring(0, 2); let replacementString = ""; if (timeString[0] === "?" && Number(sub) > 11) { replacementString = "0" + timeString[1]; } if (timeString[1] === "?" && Number(sub) > 11) { replacementString = "11"; } if (replacementString) { result = result.replace(sub, replacementString); } return result; }; 解题思路: 首先,将"HH:MM"的每个时分最大取值明确,然后如果是?就替换成对应索引的数值,这样可以满足通用的情况下 ,在这个基础上,对特殊情况进行处理,然后得出想要的结果。 Review Top US doctor wants social media health warnings - Breaking News English Lesson ...

2024-07-06 · 1 分钟 · 177 字

ARTS Week 34

Algorithm 本周的算法题为 2455. 可被三整除的偶数的平均值 给你一个由正整数组成的整数数组 nums ,返回其中可被 3 整除的所有偶数的平均值。 注意:n 个元素的平均值等于 n 个元素 求和 再除以 n ,结果 向下取整 到最接近的整数。 示例 1: 输入:nums = [1,3,6,10,12,15] 输出:9 解释:6 和 12 是可以被 3 整除的偶数。(6 + 12) / 2 = 9 。 实现代码如下: const averageValue = function (nums) { let total = 0; let count = 0; for (let i = 0; i < nums.length; i++) { if (nums[i] % 6 === 0) { total += nums[i]; count++; } } return count > 0 ? Math.floor(total / count) : 0; }; 解题思路: 因为可被3整除的判断条件为nums[i] % 3 === 0,偶数的判断条件为nums[i] % 2 === 0,所以可以合起来为nums[i] % 6 === 0,然后,再使用total来记录求和值,count来记录次数,相除即可得到想要的平均值。 Review Australia to allow foreign citizens into its army - Breaking News English Lesson 澳大利亚很快将允许非澳大利亚人参军。来自英国、加拿大和新西兰等国家的人可以申请加入澳大利亚国防军(ADF)。澳大利亚在招人参军方面遇到了问题。政府希望向其他国家的人开放军队以解决征兵问题。ADF目前缺少约4400名工人。从7月起,在澳大利亚永久居住的新西兰人可以申请加入。明年,来自英国、美国和加拿大的学生将有机会。澳大利亚国防部长理查德·马尔斯(Richard Marles)表示,未来可能会有更多国家的人加入。 马勒斯表示,出于安全考虑,法国正在改变征兵政策。他说:“澳大利亚政府选择发展澳大利亚国防军,因为这对于应对未来十年乃至更长时间内的国家安全挑战至关重要。”国防部发言人说:“为了发展国防军,我们采取了大胆的行动。从更广泛的人群中招募人才将有助于确保(ADF)反映澳大利亚的全面多样性,并能够吸引(所有)澳大利亚社会的人才。”反对党外交部长西蒙·伯明翰不同意这项政策。他说,这显示了政府的失败。他说:“我们应该看到更多的澳大利亚人有信心报名参加。” Tip Math.floor() 、Math.ceil() 和 Math.round() ...

2024-06-21 · 1 分钟 · 136 字

ARTS Week 33

Algorithm 本周的算法题为 3151. 特殊数组 I 如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组 。 Aging 有一个整数数组 nums。如果 nums 是一个 特殊数组 ,返回 true,否则返回 false。 示例 1 输入:nums = [2,1,4] 输出:true 解释: 只有两对相邻元素: (2,1) 和 (1,4),它们都包含了奇偶性不同的数字,因此答案为 true。 实现代码如下: const isArraySpecial = function (nums) { for (let i = 0; i < nums.length; i++) { if (i !== nums.length - 1 && nums[i] % 2 === nums[i + 1] % 2) { return false } } return true }; 解题思路: 一开始想到的方案是: 如果nums[0] 为偶数时,只要遍历偶数索引,其值如果出现奇数,则返回false 如果nums[0] 为奇数时,只要遍历偶数索引,其值如果出现偶数,则返回false 否则,返回true 但是,出现相邻为奇数或偶数时,是不满足条件的,因为两个条件分开判断的,所以,还是把问题想复杂化了,其实处理起来很简单,只需要判断相邻的两个数,只要出现一次奇偶性相同,则为false,否则为true。 但这里,也引申出了一个问题,检查数组边界和和不检查数组边界,哪个效率更高一点? // 检查数组边界 if (i !== nums.length - 1 && nums[i] % 2 === nums[i + 1] % 2) { return false } // 不检查数组边界 if (nums[i] % 2 === nums[i + 1] % 2) { return false } 一般来说,前者因为有一个比较的操作,所以,会影响到实际代码执行效率,但是,避免了潜在的数组越界错误;后者,没有这个比较操作,但是会有潜在数据越界错误。从健壮性和避免潜在错误的角度考虑,第一个方式是更推荐的写法。 Review Panama evacuates islanders due to rising sea levels - Breaking News English Lesson 上升的海平面导致巴拿马撤离了其中一个岛屿的居民。位于巴拿马加勒比海岸的小岛加尔迪·苏格杜布的居民正在被重新安置到内陆。然而,一名巴拿马政府官员表示,一些人拒绝撤离他们的祖居。他们将一直留到最后一刻。巴拿马政府表示,加尔迪·苏格杜布是即将发生的事情的一个迹象,因为更多的低洼岛屿正面临被海水吞没的威胁。巴拿马环境部门最近的一项研究估计,该国将失去2.01%的沿海领土。该研究还指出,将有大约38,000人需要搬迁,成本约为12亿美元。 加尔迪·苏格杜布一直是世代居住的古纳族人的家园。这个拥挤的岛屿只有366米长和137米宽,却曾经是将近300个家庭的家园。他们依靠捕鱼和旅游业谋生。24岁的岛民纳丁·莫拉莱斯说:“我们有点难过……但海水一点一点地淹没了这个岛屿。”她补充道:“最近,我发现气候变化产生了重大影响……潮汐的水位比以前更高,而且酷热难当。”莫拉莱斯女士表示,她希望她的社区在新的地点能够繁荣。她的新家将位于距离船只前往加尔迪·苏格杜布的港口两公里处,这是一项价值1200万美元的政府开发项目。 Tip git 切换分支 ...

2024-06-20 · 1 分钟 · 159 字

ARTS Week 32

Algorithm 本周的算法题为 1512. 好数对的数目 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1: 输入:nums = [1,2,3,1,1,3] 输出:4 解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始 实现代码如下: const numIdenticalPairs = function (nums) { let count = 0 for (let i = 0; i < nums.length; i++) { for (let j = 0; j < nums.length; j++) { if (nums[i] == nums[j] && i < j) { count += 1 } } } return count }; 解题思路: 题目相对简单,使用for遍历两次,加上条件判断,累计出现好书对次数即可。 Review UK leader wants national service for 18-year-olds - Breaking News English Lesson 英国首相里希·苏纳克计划为18岁年轻人引入国民服役制度,如果他所在的党派在7月4日的英国大选中获胜,他将推行强制国民服役。根据他的计划,年轻人满18岁时将有两个选择:一是花一年时间在陆军、海军或空军服役,政府预计约有3万人会选择这一选项;二是每月一个周末从事志愿工作,比如为英国的国民卫生服务体系、急救服务、消防服务或地方社区提供服务。苏纳克表示,这将帮助年轻人获得宝贵技能,并有助于“建设更强大的国家文化”。 然而,苏纳克的计划遭到了许多人的批评。各种专家表示,该计划成本过高,且英国没有足够的人员来培训3万名军队志愿者。许多国防专家认为这一想法不切实际。前海军司令艾伦·韦斯特表示,虽然他对更多年轻人意识到国防的重要性感到高兴,但这一想法是“荒谬的”。他认为政府需要增加国防开支,而国民服役制度将“榨取”国防资金。许多年轻人也不同意这一计划,认为它剥夺了他们的自由。然而,一名17岁的年轻人表示,这将给许多年轻人带来目标,并指出国民服役制度在数十个国家都运作良好。 Tip 升级 package.json 中全部依赖包到最新版本 在 Vue 项目 package.json 中,要将全部依赖包升级至最新版本,可以使用工具 npm-check-updates 实现,如下所示: 全局安装 npm install -g npm-check-updates 或者,npx安装 npx npm-check-updates 检查并显示最新版本 ncu -u 重新安装 ...

2024-06-15 · 1 分钟 · 141 字