Algorithm
本周的算法题为 1566. 重复至少 K 次且长度为 M 的模式
给你一个正整数数组arr
,请你找出一个长度为m
且在数组中至少重复k
次的模式。
模式是由一个或多个值组成的子数组(连续的子序列),连续重复多次但不重叠。模式由其长度和重复次数定义。
如果数组中存在至少重复k
次且长度为m
的模式,则返回true
,否则返回false
。
示例 1:
输入:arr = [1,2,4,4,4,4], m = 1, k = 3
输出:true
解释:模式 (4) 的长度为 1 ,且连续重复 4 次。注意,模式可以重复 k 次或更多次,但不能少于 k 次。
实现代码如下:
const containsPattern = function(arr, m, k) {
const n = arr.length;
if (n < m * k) return false;
for (let i = 0; i <= n - m * k; i++) {
let valid = true;
for (let j = 1; j < k; j++) {
for (let pos = 0; pos < m; pos++) {
const currentPos = i + j * m + pos;
const patternPos = i + pos;
if (arr[currentPos] !== arr[patternPos]) {
valid = false;
break;
}
}
if (!valid) break;
}
if (valid) return true;
}
return false;
};
解题思路:
- 首先检查数组的长度是否至少为
m * k
。如果不足,则直接返回false
。 - 遍历所有可能的模式起始位置
i
,确保这些位置可以容纳至少k
个连续的模式(即i
的范围是0
到arr.length - m * k
)。 - 对于每个起始位置
i
,检查从该位置开始的连续k
个模式的元素是否完全一致。直接通过数组索引比较元素。
Review
New Zealand relaxes visa rules for ‘digital nomads’ - Breaking News English Lesson
对有意在新西兰工作的人来说,这是一个好消息。该国放宽了签证政策,希望吸引"数字游民"在当地居住和工作长达九个月。数字游民指能基于远程在线工作方式在任何地方生活的人群。新西兰推出新签证,允许境外雇主员工在该国远程工作三个月,并可延长至九个月——但停留满九个月者可能需要缴税。经济增长部长尼古拉·威利斯表示,新政策旨在"让更多富裕且极具才华的人通过入境口来到新西兰",以促进经济发展。
近年来该国经济面临多重挑战:新冠疫情重创的旅游业尚未恢复至疫情前水平,青年人才流失问题加剧——当前二十余岁年轻人赴海外工作数量创历史新高。移民部长埃丽卡·斯坦福预计,新签证持有者在境内停留时间延长将刺激消费,“更重要的是希望他们能爱上这个地方”。
Tip
DeepSeek满血版使用
年前使用DeepSeek
还挺顺畅的,没想到过年期间突然爆火,导致流量暴涨。再加上美帝“亡我之心不死”,天天攻击,服务器经常繁忙,有时候重复提问20
多次都没反应,实在忍不了了,只能研究其他渠道来使用深度思考(R1)功能。
经过一番查找,发现可以使用硅基流动(SiliconFlow)提供的服务。硅基流动与华为云联合推出了基于昇腾云的DeepSeek R1 & V3推理服务。使用邀请码注册:https://cloud.siliconflow.cn/i/wDEipqNd,可以赠送14
块钱,足够用很久了。不过,由于这是API
调用的方式,历史问答的内容无法保留,因此需要结合Cherry Studio
客户端软件来使用。
当然,如果觉得麻烦,也可以考虑使用360
的纳米AI
搜索的慢思考模式,或者kimi
的k1.5长思考
模式。不过,就推理方面来说,还是觉得DeepSeek更有意思一些。
Share
哈哈哈,实属蚌埠住了。
