有趣的刷题库-----题库 - 力扣 (LeetCode)
界面简洁,有打卡机制,每天刷题可以获得满满成就感
复盘数据化,可以帮助自己不断优化代码思路,争取更简洁,更高效
题目一 美丽下标对的数目
给你一个下标从 0 开始的整数数组
nums
。如果下标对i
、j
满足0 ≤ i < j < nums.length
,如果nums[i]
的 第一个数字 和nums[j]
的 最后一个数字 互质 ,则认为nums[i]
和nums[j]
是一组 美丽下标对 。返回
nums
中 美丽下标对 的总数目。对于两个整数
x
和y
,如果不存在大于 1 的整数可以整除它们,则认为x
和y
互质 。换而言之,如果gcd(x, y) == 1
,则认为x
和y
互质,其中gcd(x, y)
是x
和y
的 最大公因数/** * @param {number[]} nums * @return {number} */ //获取两个数的最大公因数 function gcd(a, b) { return b === 0 ? a : gcd(b, a % b); } const countBeautifulPairs = (nums) => { let count = 0; let n = nums.length for (i = 0; i < n; i++) { let first = String(nums[i]).charAt(0); for (j = i + 1; j < n; j++) { let last = String(nums[j]).charAt(String(nums[j]).length - 1); //判断是否互质 if (gcd(Number(first), Number(last)) === 1) count++; } } return count; };
题目二 气温变化趋势
力扣城计划在两地设立「力扣嘉年华」的分会场,气象小组正在分析两地区的气温变化趋势,对于第
i ~ (i+1)
天的气温变化趋势,将根据以下规则判断:
- 若第
i+1
天的气温 高于 第i
天,为 上升 趋势- 若第
i+1
天的气温 等于 第i
天,为 平稳 趋势- 若第
i+1
天的气温 低于 第i
天,为 下降 趋势已知
temperatureA[i]
和temperatureB[i]
分别表示第i
天两地区的气温。 组委会希望找到一段天数尽可能多,且两地气温变化趋势相同的时间举办嘉年华活动。请分析并返回两地气温变化趋势相同的最大连续天数。/** * @param {number[]} temperatureA * @param {number[]} temperatureB * @return {number} */ function getTrend(start, next) { let sub = next - start; return sub; } var temperatureTrend = function (temperatureA, temperatureB) { let trendDays = []; let day = 0 let lastTrend = true; for (let i = 0; i < temperatureA.length; i++) { const Ta = getTrend(temperatureA[i], temperatureA[i + 1]); const Tb = getTrend(temperatureB[i], temperatureB[i + 1]); if (Ta == 0 && Tb == 0) { day++; } else if (Ta > 0 && Tb > 0) { day++; } else if (Ta < 0 && Tb < 0) { day++; }else{ lastTrend = false; trendDays.push(day) day = 0; } } const max = Math.max(...trendDays); return max; };