ARTS Week 9

Algorithm 本周的算法题为 1550. 存在连续三个奇数的数组 给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。 示例 1: 输入:arr = [2,6,4,1] 输出:false 解释:不存在连续三个元素都是奇数的情况 实现代码如下: var threeConsecutiveOdds = function (arr) { // 如果数组长度小于3,则直接返回false if (arr.length < 3) { return false } let lastIndex = arr.length - 1 for (let i = 0; i < arr.length; i++) { // 定义当前值、下一个值、再下一个值,如果存在连续的三个奇数,则可直接得到结果,返回true let current = arr[i] let next = arr[i + 1] let last = arr[i + 2] // 如果已经比较至数组倒数第三个,还是没有结果,而当i是倒数第二个时,因为只有2个值了,就没有比较的必要了,返回结果false if (i > lastIndex - 2) { return false } if (current % 2 !== 0 && next % 2 !== 0 && last % 2 !== 0) { return true } } } 解题思路: 总的来说,编辑数组,判断是否存在连续三个元素都是奇数的情况,有则返回true,否则继续遍历,不是就接着比较,等到最后倒数第三个还是没有结果,意味着不存在,返回false。 Review Peach fuzz is colour of the year for 2024 官方宣布,柔和桃(Peach fuzz)是2024年的年度流行色。世界色彩权威机构潘通(Pantone)将柔和桃选为2024年最能给人们带来舒适的色调。Pantone是有关配色方案的信息和建议的首选来源。它从2000年开始评选年度颜色。对即将到来的年度色调的审议小组表示:“柔和桃能带来归属感,并激发人们重新调整和追求成长的机会。”它补充说,在柔和桃中,“我们可以从内心寻找平静,这会对我们的幸福产生积极的影响。”潘通色彩研究所(Pantone Colour Institute)副总裁劳里•普雷斯曼(Laurie Pressman)表示,这种颜色“温馨的感觉能够把人们聚在一起,并丰富我们的灵魂”。 潘通配色系统是所有颜色的行业标准。到2024年,从平面设计到时尚,再到科技,各行各业都有可能将柔和桃融入他们的产品、营销和广告中。该公司的网站称:“潘通提供了一种通用的色彩语言,使品牌和制造商在工作流程的每个阶段都能做出对色彩至关重要的决定。”它补充道:“潘通的色彩语言支持所有注重色彩的行业,比如纺织品、服装、美容、室内设计、建筑和工业设计等,其中印刷、纺织品、塑料、颜料和涂料等多种材料已有超过10000种颜色标准。” Tip 解决 android gradle 下载特别慢的问题 在flutter/android开发时,经常遇到gradle下载特别慢的问题,甚至是超时失败,严重影响到项目的开发工作,为了解决这个问题,可以考虑替换成国内的镜像来下载解决。首先,在android/gradle/wrapper/gradle-wrapper.properties中,查看当前gradle版本,如下所示: 然后在腾讯镜像gradle上面,查看是否存在该版本,如下所示: ...

2023-12-25 · 1 分钟 · 133 字

ARTS Week 8

Algorithm 本周的算法题为 20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "(]" 输出:false 实现代码如下: var isValid = function(str) { if (str.length % 2 !== 0) { return false } const map = { '(': ')', '[': ']', '{': '}' } let stack = [] for (let i = 0; i < str.length; i++) { const s = str[i] if (s == '(' || s == '[' || s == '{') { stack.push(s) } else { if (s !== map[stack.pop()]) { return false } } } return stack.length == 0 }; 解题思路: 总的来说,就是通过栈后进先出(LIFO ,Last In First Out)的机制实现。 如果字符串长度不是偶数,则说明不是成对的,可直接返回false 通过Map,创建一个对象,用来处理左右括号映射关系 创建一个数组stack,用来实现栈的操作 如果是左括号,则入栈stack.push(s) 如果是右括号,stack.pop() 栈顶的左括号出栈,获取它映射的右括号,进行比较 如果不相等,直接返回false。 当stack长度为空,说明入栈的左括号都找到了对应的右括号,返回true,否则为false。 Review Argentina’s president warns of economic ‘shock treatment’ 阿根廷有了一位新总统。他叫哈维尔·米莱。他出人意料地赢得了11月的选举。米莱承诺要扭转阿根廷糟糕的经济。他特别表示,他将降低目前在140%左右的通胀率。他还希望大幅削减公共债务。在过去的几十年里,阿根廷借了很多钱。米莱开始想偿还这笔钱。在他作为总统的第一次演讲中,他说经济需要“休克疗法”来恢复。他表示,前几届政府花费太多,“没有钱了”。他警告阿根廷人,未来几年的生活将会很艰难。他说,人们将不得不生活在“紧缩”中以帮助经济。 哈维尔·米莱与阿根廷以前见过的任何政治家都不同。他是一个极右翼政治家。许多人说他很像美国前总统川普和巴西前总统博索纳罗。在米莱竞选期间,人们经常看到他拿着电锯。他想让人们知道,他将在经济方面大幅削减开支。他称自己的选举胜利是阿根廷历史的转折点,就像1989年柏林墙的倒塌一样。他承诺限制堕胎权并放宽枪支法。他也因为不相信气候变化而惹恼了环保人士。他说:“我们知道,短期内形势将会恶化,但之后我们将看到我们努力的成果。” ...

2023-12-16 · 1 分钟 · 130 字

ARTS Week 7

Algorithm 本周的算法题为 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl" 实现代码如下: if (strs[0] == "") { return "" } if (strs.length == 1) { return strs[0] } for (let i = 0; i < strs.length; i++) { for (let j = 0; j < strs.length - i - 1; j++) { if (strs[j].length > strs[j + 1].length) { let temp = strs[j] strs[j] = strs[j + 1] strs[j + 1] = temp } } } let minStr = strs[0] for (let i = 0; i < minStr.length; i++) { const minStrValue = minStr[i]; for (let j = 1; j < strs.length; j++) { if (strs[j][i] !== minStrValue) { return minStr.substring(0, i) } } } return minStr 解题思路: 总的来说就是,先将字符串数组排序,拿到最短的字符串,通过遍历这个最短的字符串,依次对比其他字符串相同下标的字符,是否相等,拿到出现不相等的下标,然后截取这个最短字符串的前缀即是我们要求的值。 首先,如果字符串数组是[""],直接返回结果为""。 如果字符串数组只有一个元素,就返回元素自身。 使用冒泡排序,将字符串数组,长度最短的字符串放在前面,获取最短字符串的值。 遍历最短字符串,依次对比其他字符串的相同下标的字符,是否相等,如果不相等,就返回存在不相等的下标,比如[ 'flow', 'flower', 'flight' ],通过flow来遍历,然后会在o也就是下标为2时,出现不相等,此时就截取最短字符串的值,minStr.substring(0, i),最长公共前缀。 题外话,前面的if是在力扣提交解法,反馈之后补上的,有点写测试用例的意思,当时我也在想,能不能有一个完美的解法,但是,仔细一想,直接根据特殊场景,给出直接的结果,虽然会觉得代码有点难看,但结果本身就是提高算法效率的事情,所以就这样了。一开始这道题目没有一点思路的,反复研究,才想到解法。不管解法好坏,当下的目的是解得出来,思路最重要,等积累到一定程度,自己能力有所长进,相信给出的解法一定会越来越优雅。 Review Stop Telling People Everything. My experience | by Oyinade | Oct, 2023 | Medium 你知道,当人们说不要透露下一步或者自己的计划给别人,不要告诉别人任何事情。在某种程度上,我一直觉得这句话很难理解,因为你不告诉别人你的情况,别人怎么能帮到你呢?我想说的是,没有人天生就是一座孤岛,在你生命的某个时刻,你需要和别人有交集。你需要别人帮助你,指导你,给你指路。 让我用自己来举例子,在三年前,当我还在读大学的时候,我接到了一个很小的项目,我决定测试一下这句话,看看我最后的表现如何,所以我没有告诉任何人关于这个项目。 当然,我对这个项目做了研究,我还上网寻求指导,我很有信心它会成为一个非常棒的项目。 我要展示作品的那一天到来了,当我起身开始展示时,我的很多朋友,甚至我周围的人,都有点震惊地发现,我被交给了这个项目,却没有提起任何事情,因为这是一个相当大的交易。 我能听到有人说,“她为什么不告诉我们”的窃窃私语,但木已成舟,我现在要展示它。当我开始我的演讲时,我没有足够的信心来讲好,我的肢体语言传达了一个完全不同的信息,我匆忙做了所有的事情,一个本应该花45分钟简单而清晰的解释的演讲,在15分钟内就完成了。 ...

2023-11-30 · 1 分钟 · 213 字

ARTS Week 6

Algorithm 本周的算法题为 9. 回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true 实现代码如下: var isPalindrome = function (x) { let turnX = '' let strX = String(x) for (let i = strX.length - 1; i >= 0; i--) { turnX = turnX + strX[i] } return Number(turnX) == x } 解题思路: 首先,将整数转化为字符串,然后for遍历,倒序输出,组合成翻转的字符串 将翻转后的字符串转换成整数和原始整数比较,如果相等,则为true,反之为false。 上面这个是很直观的一种解法,其实自己想过另一种解法,就是双指针,左右逐步向中间执行对比,只要有一个不相等则为false,否则就是true。 Review Bacteria Memories - ESL Lesson Plan - Breaking News English Lesson 细菌在其单细胞形式中具有一种机制,可以存储记忆并将其传递给后代。 细菌没有大脑,但它们可以从环境中收集信息,如果它们经常遇到这种环境,它们可以存储它,并在以后快速访问它,以造福它们。 细菌的记忆与人类不同。它可能更类似于我们的肌肉记忆。我们的身体组织对下一步该做什么有一种感觉,因为以前已经重复了很多次。 铁不仅对地球生命的起源至关重要,而且对生命的进化也至关重要。细胞利用它是有道理的。 我们对细菌行为了解得越多,就越容易对抗它们。 Tip 掘金小册子《你不知道的 Chrome 调试技巧》是免费的,里面主要是讲了一些Chrome DevTools的使用技巧,今天看完,主要是记录了下一些印象比较深的点: 全屏截图,通过 Capture full size screenshot 命令。 取色器,Chrome DevTools 自带取色器,之前一直没注意。 console.table() 可以将对象或数组以一个表格方式打印出来,方便查看。 console.log({value1,value2,value3}) 当想打印多个值时,要区分总是要加上前缀,如value1---,其实通过{}就可以以对象的格式打印出来。 console.log()并没有立即拍摄对象快照,它只是存储一个指向对象的引用,在代码返回事件队列时才去拍摄快照。 使用 JSON.stringify() 方法处理打印的结果。 Share 很多事情不能太急着下结论,要缓一缓,不能自己认为是什么样的,就笃定事实就是这样的,要慢一点,不能依据情绪判断事情,这样很容易出问题,话一旦说出口,就很难改变了,没有调查就没有发言权,任何凭感觉而做的判断,都是在给自己设下陷阱。 谁身上多少都有些问题,用人要用其长处。

2023-11-27 · 1 分钟 · 108 字

ARTS Week 5

Algorithm 本周的算法题为 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 **说明:**你不能倾斜容器。 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 实现代码如下: var maxArea = function (height) { let left = 0; let right = height.length - 1; let area = 0; while (left < right) { let currentArea = Math.min(height[left], height[right]) * (right - left); area = Math.max(area, currentArea); if (height[left] < height[right]) { left++; } else { right--; } } return area; }; 解题思路: 定义两个指针left和right,分别指向容器的左边界和右边界。 定义一个变量area用于存储最大面积的结果,初始值为0。 使用一个循环,当left小于right时进行迭代:计算当前的面积,即min(height[left], height[right]) * (right - left)。Math.min()返回传入参数中最小值。 如果当前面积大于area,则更新area的值。 如果height[left]小于height[right],则将left右移一位;否则将right左移一位。 循环结束后,返回area作为最大面积的结果。 Review Napoleon’s Hat - ESL Lesson Plan - Breaking News English Lesson 拿破仑的帽子是拍卖史上最贵的,以210万美元的价格售出。 拿破仑大约有120顶帽子,本周这顶破记录的帽子由毛毡制成,上面有法国国旗的红、白、蓝三种颜色。 最近有好莱坞电影《拿破仑》上映,由雷德利·斯科特执导,华金·菲尼克斯饰演拿破仑,凡妮莎·柯比饰演约瑟芬。 Tip 项目中有些接口,请求的资源大小有200KB之多,在前端页面交互使用上体验很差,而这些资源通常都不会改变,频繁去请求作用不大,徒增服务器负担。为了解决这个问题,引入HTTP 304 状态码机制,当浏览器发起一个条件请求到服务器时,服务器会使用304状态码来表示请求资源未更新,可以直接使用当前缓存的资源,无需再重新从服务器下载。 ...

2023-11-25 · 1 分钟 · 152 字