第 398 场 LeetCode 周赛题解

A 特殊数组 I

在这里插入图片描述

模拟:遍历数组判断是否是一个特殊数组

class Solution {
public:
    bool isArraySpecial(vector<int>& nums) {
        int r = 0;
        while (r + 1 < nums.size() && nums[r + 1] % 2 != nums[r] % 2)
            r++;
        return r == nums.size() - 1;
    }
};

B 特殊数组 II

在这里插入图片描述

查表:遍历 n u m s nums nums ,将 n u m s nums nums 划分为若干个最大的特殊数组,并记录各元素所在的特殊数组,然后遍历 q u r i e s quries quries ,判断 f r o m i from_i fromi t o i to_i toi 是否在同一个特殊数组

class Solution {
public:
    vector<bool> isArraySpecial(vector<int>& nums,
                                vector<vector<int>>& queries) {
        int n = nums.size();
        vector<int> id(n);
        for (int l = 0, r = 0; l < n; l = ++r) {
            id[l] = l;//nums[l]所在的特殊数组的左端点为l
            while (r + 1 < n && nums[r + 1] % 2 != nums[r] % 2)
                id[++r] = l;//nums[++r]所在的特殊数组的左端点为l
        }
        vector<bool> res;
        for (auto& qi : queries)
            res.push_back(id[qi[0]] == id[qi[1]]);
        return res;
    }
};

C 所有数对中数位不同之和

在这里插入图片描述

计数:记录每个数位上各数字的出现次数,然后枚举数组中各元素的各个数位

class Solution {
public:
    using ll = long long;
    long long sumDigitDifferences(vector<int>& nums) {
        int n = nums.size();
        int m = to_string(nums[0]).size();
        int cnt[m][10]; // cnt[j][v]:数位j上v数字的出现次数
        memset(cnt, 0, sizeof(cnt));
        for (auto v : nums) {
            auto s = to_string(v);
            for (int j = 0; j < m; j++)
                cnt[j][s[j] - '0']++;
        }
        ll res = 0;
        for (auto v : nums) {
            auto sv = to_string(v);
            for (int j = 0; j < m; j++)
                res += (ll)(n - cnt[j][sv[j] - '0']);
        }
        return res / 2;//题目计数方法中数对是无序的,所以res/2
    }
};

D 到达第 K 级台阶的方案数

在这里插入图片描述

记忆化搜索:需要维护三个状态信息:当前所在台阶 c u r cur cur ,上一次操作(如果有)是否是下台阶 l a s t _ b a c k last\_back last_back ,当前 j u m p jump jump 值 。可以将 ( c u r , l a s t _ b a c k , j u m p ) (cur,last\_back,jump) (cur,last_back,jump) 用一个 long long 类型数表示,从而用哈希表来实习记忆化搜索

class Solution {
public:
    using ll = long long;
    ll enc(int cur, int last_back, int jump) {//状态编码 (cur,last_back,jump) -> mask
        return ((ll)cur << 6LL) | (last_back << 5) | jump;
    }
    tuple<int, int, int> dec(ll mask) {//状态解码 mask -> (cur,last_back,jump)
        return {mask >> 6, mask >> 5 & 1, mask & 31};
    }
    int waysToReachStair(int k) {
        unordered_map<ll, ll> cnt;
        function<ll(ll)> get = [&](ll mask) {//记忆化搜索
            if (cnt.count(mask))
                return cnt[mask];
            auto [cur, last_back, jump] = dec(mask);
            if (cur > k + 1)
                return 0LL;
            if (cur == k)
                cnt[mask] = 1;
            cnt[mask] += get(enc(cur + (1LL << (ll)jump), 0, jump + 1));
            if (last_back == 0)//不能连续下台阶
                cnt[mask] += get(enc(cur - 1, 1, jump));
            return cnt[mask];
        };
        return get(enc(1, 0, 0));
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/641404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打包要求 minCompileSdk 使用指定版本及以上

我当前的 compileSdkVersion 30&#xff0c;因为依赖了 androidx.core:core:1.9.0 它要求最低 compileSdkVersion 33。 那么如果我不想升级 compileSdkVersion 应该怎么办&#xff1f; 答&#xff1a;当然是降低 core:core 版本&#xff01; 看看谁依赖了这两个版本 android…

SpringCloud微服务04-Elasticsearch-DSL查询-聚合

一、Elasticsearch 搜索引擎&#xff0c;响应速度非常快&#xff0c;特别是对大数据量的情况 1.初始elasticsearch 如果只需要商品搜索&#xff0c;百度这种搜索网站&#xff0c;只需要第二个就够了 docker部署&#xff1a;day08-Elasticsearch - 飞书云文档 (feishu.cn) e…

有趣的css - 移形换位加载动画

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是一个移形换位动态加载小动效&#xff0c;适用于 app 列表加载&#xff0c;页面加载或者图片懒加载等场景。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html…

python基础之循环

目录 1.while 循环 2.for循环 3.for-else 和 while-else 4.关键字break和continue 1.while 循环 语法结构 while 条件语句:代码 解释&#xff1a;不断循环&#xff0c;如果条件语句为真&#xff0c;则执行代码&#xff0c;直到条件语句为假。假设条件语句一直为真&#xff0…

智能体(Agent)详细精讲

1.什么是智能体 智能体&#xff08;Agent&#xff09;是一种由大规模语言模型&#xff08;如GPT-4或本地模型&#xff09;驱动的先进系统&#xff0c;能够执行多种复杂任务。通过引入智能体&#xff0c;企业和个人可以实现自动化处理和高效管理各种事务。 智能体的核心是其“大…

ATmega328P加硬件看门狗MAX824L看门狗

void Reversewdt(){ //硬件喂狗&#xff0c;11PIN接MAX824L芯片WDIif (digitalRead(11) HIGH) {digitalWrite(11, LOW); //低电平} else {digitalWrite(11, HIGH); //高电平 }loop增加喂狗调用 void loop() { …… Reversewdt();//喂狗 }

❤Element的使用element

❤Element的使用 1、input输入框 禁止自动补全和下拉提示 input 输入框在输入后浏览器会记录用户输入的值&#xff0c;在下次输入的时候会将记录的值提示在输入框的下面&#xff0c;当输入框是密码的时候&#xff0c;这样可以看见上次输入的密码&#xff0c;这样用户体验不好…

2024全新Langchain大模型AI应用与多智能体实战开发

2024全新Langchain大模型AI应用与多智能体实战开发 LangChain 就是一个 LLM 编程框架&#xff0c;你想开发一个基于 LLM 应用&#xff0c;需要什么组件它都有&#xff0c;直接使用就行&#xff1b;甚至针对常规的应用流程&#xff0c;它利用链(LangChain中Chain的由来)这个概念…

[Linux]Crond任务调度以及at任务调度

一.crond任务定时调度 crond是反复检测执行的&#xff0c;一个任务结束后&#xff0c;在所规定的时间之后会再次执行 crontab 指令可以给系统分配定时任务 crontab -e 进入编辑页面&#xff0c;设定任务 crontab -l 查看已有定时任务 crontab -r 删除所有任务 编辑时&#xff…

深度学习之基于MTCNN+Facenet的人脸识别身份认证系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着信息技术的快速发展&#xff0c;身份认证技术在日常生活和工作中的重要性日益凸显。传统的…

【全部更新完毕】2024电工杯B题详细思路代码成品文章教学:大学生平衡膳食食谱的优化设计及评价

大学生平衡膳食食谱的优化设计及评价 摘要 大学阶段是学生获取知识和身体发育的关键时期&#xff0c;也是形成良好饮食习惯的重要阶段。然而&#xff0c;当前大学生中存在饮食结构不合理和不良饮食习惯的问题&#xff0c;主要表现为不吃早餐或早餐吃得马虎&#xff0c;经常食用…

Python文件和数据格式化-课后作业[python123题库]

文件和数据格式化-课后作业 一、单项选择题 1、文件句柄f&#xff0c;以下是f.seek(0)作用的是&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪…

如何从http免费升级到https

使用https协议开头是为了在用户访问网站时提供更安全的网络环境。相比http&#xff0c;使用https有数据加密、身份验证、保护隐私、搜索引擎优化等优势。一般获取https证书&#xff0c;则需要支付费用给证书颁发机构&#xff08;CA&#xff09;。还有一些免费的证书证书颁发机构…

嵌入式单片机启动地址映射关系

一、内核只会从0地址启动 1.0地址第一个字是sp栈指针,第二个字是Reset_Handler入口,参考图1中启动代码中的中断向量表。具体使用流程参考图2(参考自野火) 图1 图2 2.0地址映射以后,软件上使用0地址访问的空间是映射到的器件的空间 3.0地址映射只会影响单个器件上的地址,…

知识图谱数据预处理笔记

知识图谱数据预处理笔记 0. 引言1. 笔记1-1. \的转义1-2. 特殊符号的清理1-3. 检查结尾是否正常1-4. 检查<>是否存在1-5. 两端空格的清理1-6. 检查object内容长时是否以<开始 0. 引言 最近学习知识图谱&#xff0c;发现数据有很多问题&#xff0c;这篇笔记记录遇到的…

数据可视化

目录 数据可视化: 常见的数据可视化库: Echarts 使用五步曲 Echarts 相关配置 数据可视化: 应对现在数据可视化趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出 主要目的:借助于…

小红书-社区搜索部 (NLP、CV算法实习生) 一面面经

&#x1f604; 整个流程按如下问题展开&#xff0c;用时60min左右面试官人挺好&#xff0c;前半部分问问题&#xff0c;后半部分coding一道题。 各位有什么问题可以直接评论区留言&#xff0c;24小时内必回信息&#xff0c;放心~ 文章目录 1、自我介绍2、介绍下项目&#xff…

Node.js知识点以及案例总结

思考&#xff1a;为什么JavaScript可以在浏览器中被执行 每个浏览器都有JS解析引擎&#xff0c;不同的浏览器使用不同的JavaScript解析引擎&#xff0c;待执行的js代码会在js解析引擎下执行 为什么JavaScript可以操作DOM和BOM 每个浏览器都内置了DOM、BOM这样的API函数&#xf…

好用的window粘贴板

可以设置指定的快捷键&#xff0c;在需要使用最近复制的记录时快速的复用 -> Ditto。 选择Download即可 地址&#xff1a;Ditto clipboard manager (sourceforge.io)https://ditto-cp.sourceforge.io/

SwiftUI中的组合动画(Simultaneous, Sequenced, Exclusive)

了解了常见的几种手势后&#xff0c;接下来我们了解一下组合手势的操作&#xff0c;当一个视图存在多个手势的时候&#xff0c;为了避免手势冲突&#xff0c;SwiftUI提供了自定义手势的方法&#xff0c;比如同时进行&#xff0c;顺序进行等等。 以下是一些常见的多种手势组合使…