ARTS Week 10

Algorithm 本周的算法题为 1534. 统计好三元组 给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。 0 <= i < j < k < arr.length |arr[i] - arr[j]| <= a |arr[j] - arr[k]| <= b |arr[i] - arr[k]| <= c 其中 |x| 表示 x 的绝对值。 返回 好三元组的数量。 示例 1: 输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3 输出:4 解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。 实现代码如下:...

2023-12-31 · 1 分钟 · 185 字

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 !...

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....

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....

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...

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