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 车臣共和国的文化部制定了关于人们可以听什么速度的音乐的规定。该部门禁止播放速度过快或过慢的歌曲,并发布了有关允许的歌曲节奏的公告。公告中写道:“从现在开始,所有的音乐、歌唱和舞蹈作品的节奏应该在80到116拍每分钟之间。”这个新标准的起点是每分钟80拍,比许多现代流行音乐要慢得多。然而,俄罗斯国歌通常以每分钟76拍的速度演奏。文化部尚未就国歌是否受到新规定的影响发表任何声明。很可能国歌将成为这一新规定的例外。 禁止播放速度过快或过慢的音乐旨在保护车臣的文化和传统。《莫斯科时报》称这是为了“根除任何西方化的迹象”。车臣领导人拉姆赞·卡德罗夫表示,这项禁令是为了使音乐“符合车臣人的心态”。他补充道:“借用他人的音乐文化是不可容忍的。”车臣文化部部长穆萨·达达耶夫表示:“我们必须将车臣人民的文化遗产传承给人民和我们子孙后代。”当地艺术家需要在6月1日之前重新创作他们的歌曲以符合新的节奏要求。车臣的人们将不能再听到电子音乐,或者碧昂丝、公鸭和泰勒的许多歌曲。 Tip git clone xxx not found 在使用git从gitlab下载项目的时候,出现以下这个报错问题: fatal: repository 'https://gitlab.xxx.com/xxx/web/project-name/' not found 因为URL是copy的,所以不会弄错,猜测应该是用户名和密码异常,所以使用以下命令进行配置: git config --global user.name "xxxx" git config --global user.password "xxxx" 发现还是失败了,就想着怎么触发用户名和密码输入那个弹窗。看了一下发现使用的URL其实是没有.git结尾的,修改了一下clone的命令为: git clone https://gitlab.xxx.com/xxx/web/project-name.git 此时,触发了用户名和密码输入弹窗,填入正确信息即可,问题解决。 ...

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; }; 解题思路: 首先,检查矩阵的行数,如果矩阵是空的,直接返回一个空数组。 然后,获取矩阵的行数 m 和列数 n,并初始化一个空数组 result 来存储遍历的结果。接着,初始化变量 row 和 col 分别代表当前的行和列,d 代表遍历的方向。在矩阵中,向右上方向移动,行数减小,列数增大,所以,当d=1时,为右上方向遍历,当d=-1时,为左下方向遍历。 接下来,通过一个循环来遍历整个矩阵。在每一次循环中,将当前位置的值加入到结果数组中,然后根据当前的遍历方向 d 来更新 row 和 col 的值。同时,根据不同的情况(比如超出边界),调整 row、col 和 d 的值,以确保遍历的方向是正确的。 最后,返回结果数组。 Review Rockets and planes chase the solar eclipse - Breaking News English Lesson ...

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已经融入了这么多人的生活中,几乎没有人对此有太多想法。人们很可能会永远使用它。 Tip String.prototype.split() 方法接受一个模式,通过搜索模式将字符串分割成一个有序的子串列表,将这些子串放入一个数组,并返回该数组。 Array.prototype.splice() 通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容。 Array.prototype.slice() 返回一个新的数组对象,这一对象是一个由 start 和 end 决定的原数组的浅拷贝(包括 start,不包括 end),其中 start 和 end 代表了数组元素的索引。原始数组不会被改变。 Array.prototype.toSpliced() 是 splice()方法的复制版本。它返回一个新数组,并在给定的索引处删除和/或替换了一些元素。 Share 在看《少年包青天》,然后八贤王对包拯说的一句话:“你的心,不要改,只是再多一点计谋和手段”。结合最近百度副总裁璩静事件,不管真心还是假意,是没办法用很激进的方式处理团队的事情,很容易落人口实,陷自己于不利之地。引以为戒,引以为戒。 ...

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 } 解题思路: 一开始事宜for循环,然后加上三个if条件进行判断就解答出来了,但是,不符合题目要求的时间复杂度 O(log n),所以就看了一下官方解答思路,使用二分查找法解答。如果目标值存在于数组中,返回它的索引,如果不存在,返回目标值应该被插入的位置。二分查找法之前已经使用过,但是一下子没想起来,所以还是要多练习才行。 Review AI an ’extinction-level threat’ says study by experts - Breaking News English Lesson 美国国务院委托的一份报告警告说,人工智能存在生存威胁。该报告假设了最坏情况下对人类的“灭绝级威胁”。作者指出,“武器化和失控导致的人工智能能力迅速扩大,对国家安全构成越来越大的风险”。该报告补充说,美国政府“明确而迫切需要”“迅速果断地”进行干预。它继续说:“先进人工智能的兴起有可能破坏全球安全的稳定,让人想起核武器的引入。该报告呼吁成立一个新的联邦机构来监管开发人工智能工具的公司,并限制人工智能的发展。 这份长达247页的报告是国务院于2022年11月委托撰写的。它是由一家提供有关人工智能的技术简报和指导的公司编写的。作者与OpenAI、Google DeepMind和Meta等人工智能公司的专家进行了广泛的交谈。作者建议为人工智能模型的计算能力设定上限。他们还建议将开源或揭示更强大的人工智能模型背后的编码定为刑事犯罪。Futurism.com 网站表示:“超过一半的受访人工智能研究人员表示,人类有5%的可能性会被逼到灭绝,以及其他’极其糟糕的结果’。 Tip gitlab 仓库迁移 git clone --mirror url git remote set-url –-push origin url git push --mirror 然后会出现提示没有权限的问题,如下图所示: ...

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

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万个复活节彩蛋。”然而,气候变化正在使种植可可豆变得更加困难。气候分析师表示,如果我们希望稳定供应可可和巧克力,就需要采取更多措施减少化石燃料排放。 Tip return语句终止函数的执行,并返回一个指定的值给函数调用者。 break语句中止当前循环,switch语句或label语句,并把程序控制流转到紧接着被中止语句后面的语句。中止外层循环,需使用label语句,在外层for循环前加上outer,然后使用break outer实现。 continue声明终止当前循环或标记循环的当前迭代中的语句执行,并在下一次迭代时继续执行循环。 Share 有些习惯一旦断掉,就很难再捡起来了,所以这个ARTS要补很多篇文章,只能先找下当前应对策略,一方面可以有效完成任务,另一方面先易后难,执行起来会顺利一点。事情太多太多了,雨露均沾很难,要有取舍,别到时候啥都没得到。 睡觉,运动,饮食,学习,工作。身体是革命的本钱,任务美好的遐想都基于自身的健康,没有健康,这一切只不过是空中阁楼,不要做陀螺,要做不倒翁。 不要被忙碌的表象迷惑,你所谓的熬夜只是在隔靴挠痒,根本没有,也不想命中要害,要对自己诚实,不要自欺欺人。

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