掘友等级

获得徽章 16
#刷题交流# 打卡第二十二天:[找出最长的神奇数列]
从头到尾遍历序列,记录当前的交替数列。如果当前元素和前一个元素不同,则继续记录交替的数列;否则,判断当前交替数列是否符合「神奇数列」的条件(长度 >= 3)。当找到新的更长的交替数列时,更新最长神奇数列的起始位置和长度。
#刷题交流# 打卡第二十一天:[最大乘积区间]
我们需要维护两个动态规划数组,dp_max[i]:表示以 arr[i] 结尾的子数组的最大乘积。
dp_min[i]:表示以 arr[i] 结尾的子数组的最小乘积。对于 arr[i],它可以与前一个元素的乘积继续相乘,形成一个新的最大值或最小值。因此我们要考虑以下三种情况:
arr[i] 自身就是一个新的子数组。
dp_max[i-1] * arr[i],即之前的最大乘积乘上当前元素。
dp_min[i-1] * arr[i],即之前的最小乘积乘上当前元素。
通过动态更新这些状态,我们可以在 O(n) 时间内求解出最大乘积区间。
#刷题交流# 我们需要维护两个动态规划数组,dp_max[i]:表示以 arr[i] 结尾的子数组的最大乘积。
dp_min[i]:表示以 arr[i] 结尾的子数组的最小乘积。对于 arr[i],它可以与前一个元素的乘积继续相乘,形成一个新的最大值或最小值。因此我们要考虑以下三种情况:
arr[i] 自身就是一个新的子数组。
dp_max[i-1] * arr[i],即之前的最大乘积乘上当前元素。
dp_min[i-1] * arr[i],即之前的最小乘积乘上当前元素。
通过动态更新这些状态,我们可以在 O(n) 时间内求解出最大乘积区间。
#刷题交流# 打卡第二十天:[版本号比较]
分割版本号,通过 split('.') 将每个版本号分割成一个数组,得到各个修订号。处理不同长度的版本号,如果一个版本号较短,则假设缺失的部分为 0,因此需要通过判断数组长度来填充 0。比较修订号,使用 parseInt() 解析修订号,并忽略任何前导零,确保正确的整数比较。返回结果,如果版本号中的修订号较大,则返回 1;较小则返回 -1;如果相等,则继续比较下一个修订号。
#刷题交流# 打卡第十九天:[完美整数]
生成数字 i 对应的完美整数。使用 num = num * 10 + i 的方式构造每个完美整数。如果当前完美整数在 [x, y] 范围内,则计数加 1。当完美整数大于 y 时停止生成。
#刷题交流#
打卡第十八天:[数列差异的最小化]
关键点在于观察 (a[i] - b[j])^2 和 k^2 的关系。可以通过二分查找来加速寻找最接近的 b[j],减少暴力检查的次数。
#刷题交流# 打卡第十七天:[最佳人员]
定义性格类型的差异,如果某对性格类型是不兼容的(如 AE, BD 等),我们会返回 Infinity 作为该维度的匹配差异。计算每个士兵与目标性格密码的差异值,如果某个维度不匹配,我们会直接跳过该士兵。
找出差异值最小的士兵,如果多个士兵匹配度相同,按其在 array 中的顺序返回。
#刷题交流# 打卡第十五天:[a替换函数]
使用正则表达式 /a/g 来匹配所有小写字母 a,其中 g 表示全局替换。每找到一个 a,将其替换为 "%100"。
#刷题交流# 打卡第十五天:[完美偶数计数]
遍历数组 a 中的每个元素。
对每个元素检查它是否是偶数(即能被 2 整除)。
检查该偶数是否在给定的区间 [l, r] 范围内。
统计符合条件的“完美偶数”。
#刷题交流# 打卡第十四天:[组成字符串ku的的最大发个数]
由于题目中明确提到字符大小写不敏感,我们可以将整个字符串转换为小写字母,这样就不需要区分大小写。由于我们只关心字符 "k" 和 "u" 的个数,可以直接统计这两个字符在字符串中出现的次数。字符 "k" 和 "u" 是组成 "ku" 字符串的关键,因此只需要统计它们的出现频率。每个 "ku" 字符串需要一个 "k" 和一个 "u",因此我们能组成的最大 "ku" 字符串的个数,必定是 "k" 和 "u" 的数量中的较小值。也就是:maxKU = min(count('k'), count('u'))
下一页