ARTS Week 52

Algorithm 本周的算法题为 1805. 字符串中不同整数的数目 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8" 和 "34" 。 返回对 word 完成替换后形成的 不同 整数的数目。 只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。 示例 1: 输入:word = "a123bc34d8ef34" 输出:3 解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。 实现代码如下: const numDifferentIntegers = function (word) { // 1. 匹配所有的数字,返回一个数组,每个元素是一个数字字符串 const nums = word.match(/\d+/g); // 2. 如果没有匹配到数字,返回0 if (nums === null) { return 0; } // 3. 去掉前导0,返回一个新的数组,每个元素是一个数字字符串 nums.forEach((n, i) => { nums[i] = n.replace(/^0+/, ''); }); // 4. 用Set去重 const set = new Set(nums); // 去重 // 5. 返回Set的大小 return set.size; }; 解题思路: 匹配所有的数字,返回一个数组,每个元素是一个数字字符串。 如果没有匹配到数字,返回0。 去掉前导0,返回一个新的数组,每个元素是一个数字字符串。 用Set去重。 使用 set.size 返回大小,即为所求的值。 Review Scientists find why most ginger cats are male - Breaking News English Lesson ...

2024-05-22 · 1 分钟 · 137 字

ARTS Week 31

Algorithm 本周的算法题为 1556. 千位分隔数 给你一个整数 n,请你每隔三位添加点(即 “.” 符号)作为千位分隔符,并将结果以字符串格式返回。 示例 1: 输入:n = 123456789 输出:"123.456.789" 实现代码如下: const thousandSeparator = function (n) { const str = String(n) let result = '' for (let i = str.length - 1; i >= 0; i--) { let s = str[i]; if ((str.length - i) % 3 == 0 && i !== str.length - 1 && i !== 0) { s = '.' + s } result = s + result } return result }; 解题思路: 因为是千位分隔数,所以使用倒序遍历,然后通过找规律,如下所示: //index 0 123 const str = "1.234" //index 012 345 678 const str = "123.456.789" 从以上可知,str.length - i 的值得出为3、3和6,都是3的倍数,所以可以使用(str.length - i) % 3 == 0来找到要插入.的位置,加上当最后一位和第一位时不需要加上.,然后通过result依次拼接字符串,得到所求结果值。 题外话:最近总算把ARTS之前落下的进度赶上来了。好几次看着前面要补4篇左右,心里还是有点虚啊,但是从来没有要放弃,就觉得慢慢补回来就好了,不需要做任何心理建设,然后就补回来了。还是按正常节奏,每周完成一篇比较好。 Review Seafood could have higher levels of ‘forever chemicals’ - Breaking News English Lesson 一项新研究指出,海鲜中可能存在更高水平的“永久化学物质”。永久化学物质是人造毒素,不会分解。它们可以停留在人体血液中,导致各种健康问题,包括癌症、肾脏和肝脏问题、激素变化以及对胎儿发育的损害。来自美国达特茅斯学院的研究人员表示,应该为海鲜中的永久化学物质制定安全指南。他们说,这些毒素的水平在虾、明虾和龙虾等海洋生物中最高。这可能意味着喜欢寿司、生鱼片和虾仁鸡尾酒的人可能需要重新考虑他们的饮食习惯,减少一些海鲜的摄入量。 永久化学物质在20世纪30年代被开发出来。从20世纪50年代以来,它们被用于制造许多产品。它们通常存在于食品包装中。我们大部分的食品包装纸、外卖盒、比萨盒和其他食品容器都含有这些化学物质。几十年来,这些化学物质已经进入了我们的食物链。研究人员表示,海鲜中的永久化学物质水平较高。梅根·罗曼诺教授表示,她希望人们继续享用海鲜,但要意识到风险。她说:“我们的建议不是不吃海鲜。海鲜是蛋白质和欧米茄脂肪酸的重要来源。”她补充说,让人们更多地了解我们所吃食物的成分是很重要的。 Tip git pull放弃本地修改,强制更新。 ...

2024-05-20 · 1 分钟 · 153 字

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; } } 解题思路: 先将数字从小到大排序,生成新数组; 然后获取最后一位,如果大于等于倒数第二位的数值乘以2,则表示存在满足条件的最大整数,否则返回-1; 通过indexOf在原nums数组中获取最大整数下标。 Review Rising auto insurance premiums fuelling inflation - Breaking News English Lesson 汽车保险费的飙升正在加剧美国的通货膨胀压力,成本以最快的速度上涨。仅在3月份,保险费就上涨了2.6%,这意味着成本比去年同期高出了22.2%。这些涨价导致了上个月通货膨胀率上升了0.4%。除汽车保险外,其他任何消费类别都没有像它一样飙升。Foxbusiness.com表示,美国汽车保险的平均费用已经超过每年2300美元,约合每月192美元。不断上涨的价格对最低收入者影响最大。对于那些在生活成本危机中努力维持生计的人来说,保险正成为一种更大的经济负担。 汽车分析师肖恩·塔克试图解释价格上涨背后的原因。他说:“我认为最大的因素是新车和它们越来越贵,所以如果你撞坏了你的车,替换成本非常高,而且现在小事故的费用也很昂贵。”他将现代汽车中的技术、小工具和安全设备的复杂性归因于更昂贵的修理和更换成本。更换电动汽车电池的费用可能在6500美元到2万美元以上。一个简单的刮擦可能会损坏昂贵的嵌入式传感器、摄像头和声纳。推动劳动力成本上升的一个因素是汽车技工的短缺。 Tip git命令窗口样式美化 用了N年的东西,一直没有关注样式问题,只觉得还行,但是最近安装nvm,发现一下字体看不清,就看下怎么设置样式,才发现这个可以右键Options然后进行设置,除了字体颜色、背景色,还有主题可选,但是试用了一下,不够美观,如下所示: 在网上查了一下,发现这个样式还不错。Git Bash界面的美化(一看必会)_git bash美化-CSDN博客,配置流程就是修改.minttyrc文件,位置在C:\Users\weihao,将里面的使用#注释,然后复制样式覆盖即可。 Share

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 车臣共和国的文化部制定了关于人们可以听什么速度的音乐的规定。该部门禁止播放速度过快或过慢的歌曲,并发布了有关允许的歌曲节奏的公告。公告中写道:“从现在开始,所有的音乐、歌唱和舞蹈作品的节奏应该在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 字