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;
};

解题思路:

  1. 首先检查数组的长度是否至少为 m * k。如果不足,则直接返回 false
  2. 遍历所有可能的模式起始位置 i,确保这些位置可以容纳至少 k 个连续的模式(即 i 的范围是 0arr.length - m * k)。
  3. 对于每个起始位置 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搜索的慢思考模式,或者kimik1.5长思考模式。不过,就推理方面来说,还是觉得DeepSeek更有意思一些。

Share

哈哈哈,实属蚌埠住了。