第 109 场 LeetCode 双周赛

news2024/11/25 11:48:43

A 检查数组是否是好的

在这里插入图片描述

暴力: 排序后遍历判断

class Solution {
public:
    bool isGood(vector<int> &nums) {
        sort(nums.begin(), nums.end());
        for (int i = 0; i < nums.size() - 1; i++)
            if (nums[i] != i + 1)
                return false;
        return nums.back() == nums.size() - 1;
    }
};

B 将字符串中的元音字母排序

在这里插入图片描述

模拟: 单独对元音字母排序并对元音字母所在的位置按序赋值

class Solution {
public:
    string sortVowels(string s) {
        set<char> se{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
        vector<char> li;
        for (auto c: s)
            if (se.count(c))
                li.push_back(c);
        sort(li.begin(), li.end());
        int i = 0;
        for (auto &c: s)
            if (se.count(c))
                c = li[i++];
        return s;
    }
};

C 访问数组中的位置使分数最大

在这里插入图片描述

动态规划: 定义 p i , 0 p_{i,0} pi,0为在 n u m s [ 0 , i ] nums[0,i] nums[0,i]上最后一个访问的元素为偶数的最大得分和, p i , 1 p_{i,1} pi,1为在 n u m s [ 0 , i ] nums[0,i] nums[0,i]上最后一个访问的元素为奇数的最大得分和. p i , j p_{i,j} pi,j的状态只与 p i − 1 , 0 p_{i-1,0} pi1,0 p i − 1 , 1 p_{i-1,1} pi1,1有关.

class Solution {
public:
    typedef long long ll;

    long long maxScore(vector<int> &nums, int x) {
        int n = nums.size();
        ll p[n][2];
        p[0][nums[0] & 1] = nums[0];
        p[0][nums[0] & 1 ^ 1] = INT64_MIN;//无效标志
        ll res = p[0][nums[0] & 1];
        for (int i = 1; i < n; i++) {
            p[i][0] = INT64_MIN;
            p[i][1] = INT64_MIN;
            if (p[i - 1][nums[i] & 1] != INT64_MIN)
                p[i][nums[i] & 1] = max(p[i - 1][nums[i] & 1], p[i - 1][nums[i] & 1] + nums[i]);
            if (p[i - 1][nums[i] & 1 ^ 1]!= INT64_MIN)
                p[i][nums[i] & 1] = max(p[i][nums[i] & 1], p[i - 1][nums[i] & 1 ^ 1] + nums[i] - x);
            p[i][nums[i] & 1 ^ 1] = p[i - 1][nums[i] & 1 ^ 1];
            res = max({res, p[i][0], p[i][1]});
        }
        return res;
    }
};


D 将一个数字表示成幂的和的方案数

在这里插入图片描述

动态规划: 定义 p v , m x p_{v,mx} pv,mx为将 v v v 表示成一些互不相同且其中最大值为 m x mx mx的正整数的 x 次幂之和的方案数. 有状态转移方程: p v , m x = ∑ k = 0 m x − 1 p v − m x x , k p_{v,mx}=\sum_{k=0} ^{mx-1} p_{v-mx^x, k} pv,mx=k=0mx1pvmxx,k, 实现时可以用前缀和减少计算: s v , i = ∑ k = 0 i p v , k s_{v,i}=\sum_{k=0}^ i p_{v,k} sv,i=k=0ipv,k

typedef long long ll;

ll fpow(ll x, ll n) {//快速幂: x^n
    ll res = 1;
    for (ll cur = 1, e = x; n; e = e * e, n >>= 1)
        if (n & 1)
            res *= e;
    return res;
}

class Solution {
public:
    ll mod = 1e9 + 7;

    int numberOfWays(int n, int x) {
        ll p[n + 1][n + 1];
        ll s[n + 1][n + 1];
        memset(p, 0, sizeof(p));
        memset(s, 0, sizeof(s));
        p[0][0] = 1;
        for (int i = 0; i <= n; i++)
            s[0][i] = 1;
        for (int v = 1; v <= n; v++) {
            for (int mx = 1; mx <= v && v - fpow(mx, x) >= 0; mx++)
                p[v][mx] = s[v - fpow(mx, x)][mx - 1];
            for (int i = 1; i <= n; i++)
                s[v][i] = (s[v][i - 1] + p[v][i]) % mod;
        }
        return (s[n][n] + mod) % mod;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

npm(基础)

基础-是什么 深度-为什么 #npm基础 - 现代前端开发模式 ##很多年前的前端,是什么样子? ##补充一下 ###Node SDK(software develop kit):Node jdk() IDE(集成dev env):VSCode ####有了npm,我们就可以创建一个工程环境 npm - 理解成一个包管理下载的工具 每一个npm管理…

树莓派刷机和登入

1.打开映像工具 2.选择映像文件写入 3.拔出卡插入树莓派上电 4.树莓派登入 1.HDMI视频线&#xff0c;连接到显示屏幕 2.串口登录 修改系统配置&#xff0c;启用串口登录树莓派 &#xff08;1) 打开SD卡根目录的"config.txt文件"&#xff0c;停止蓝牙&#xff0c;…

Pytorch深度学习------TensorBoard的使用

文章目录 1.什么是TensorBoard2.安装3.启动4.Pytorch 使用 TensorBoard4.1 写入数据4.2 写入图像 1.什么是TensorBoard TensorBoard是一个工具&#xff0c;主要用于数据可视化&#xff0c;用大白话的语言来说就是可以记录在机器学习中表格数据、非表格数据&#xff08;图片、文…

信息与通信工程学科面试准备——通信原理|推免/复试/补充

目录 1. 加性高斯白噪声 加性噪声 白噪声 2. 窄带随机过程 2.1 正弦波加窄带随机过程 3. 信道类型 4.多径传播 5. 频率选择性衰落与相关带宽 6.信道容量&#xff08;连续信道的信道容量&#xff09; 7.调制的目的和分类 7.1 目的 7.2 方式 7.3 作用(正弦波调制) …

08_堆学习

目录 一、堆的核心概述2、内存细分 二、设置堆内存大小与OOM1、设置堆内存大小2、OOM的说明 三、年轻代与老年代2、如何查看一个程序新生代和老年代的比例 四、图解对象分配过程1、图解对象分配过程2、对象分配特殊情况3、常用优化工具概述与 Jprofiler的演示 五、Minor GC、Ma…

MATLAB 自定义最小二乘法拟合直线点云(具体过程)方法二 (27)

MATLAB 自定义最小二乘法拟合直线点云(具体过程)方法二 (27) 一、算法简介二、算法实现1.代码(注释详细)2.效果展示一、算法简介 最小二乘法拟合直线,可以将离散的点云表达为一条规则的数学直线, 这里使用的直线方程为y = kx+b 这里提供具体的实现流程,展示如何进行最…

实现外部缓存-Redis

目录 实现 RedisTemplate RedisTemplate的序列化 RedisSerializer 创建Redis缓存配置类 测试使用 创建配置类 创建注解测试实体 创建配置文件 创建单元测试类进行测试 实现 RedisTemplate XXXTemplate 是 Spring 的一大设计特色&#xff0c;其中&#xff0c;RedisTe…

Linux笔记——进程管理与网络监控技术讲解

系列文章目录 Linux笔记——磁盘进行分区与挂载介绍 Linux笔记——管道相关命令以及shell编程 文章目录 系列文章目录 前言 一 进程管理 1 简介 2 系统执行进程的情况 3 查看进程树 4 服务管理 4.1 服务的运行级别 4.2 chkconfig 4.3 systemctl管理指令 4.4 针…

【文档智能】ERNIE-Layout

前言 这是百度在2022年的一篇工作&#xff1a;ERNIE-Layout。该工作通过增强布局知识的预训练模型&#xff0c;以学习更好的表示&#xff0c;结合文本、布局和图像的特征。旨在利用文档布局相关信息&#xff0c;进行文档理解&#xff0c;进一步提高文档信息抽取的性能。 1、文…

FPGA_学习_13_方差计算小模块

测距器件APD的性能与器件本身的温度、施加在APD的偏置电压息息相关。 在不同的温度下&#xff0c;APD的偏压对测距性能的影响非常大。 要确定一个合适的APD的偏压Vopt&#xff0c;首先你要知道当前温度下&#xff0c;APD的击穿电压Vbr&#xff0c;一般来讲&#xff0c;Vopt Vb…

【Zerotier】通过docker自建PLANET服务器

在如今全球互联的时代&#xff0c;我们对于互联网的依赖程度越来越高。然而&#xff0c;传统的网络连接方式在某些情况下可能会受到一些限制&#xff0c;例如局域网的范围限制、防火墙的阻断或者设备所处的多层NAT等。但是&#xff0c;现在有一个名为ZeroTier的工具出现了&…

yolov7 详解(1):yolov7 网络结构及创新点

文章目录 0. 概述1. 网络整体结构2.创新点2.1 创新点1:E-ELAN结构 (Extended efficient layer aggregation networks)ELAN结构2.2 创新点2: 模型缩放2.3 创新点3: 计划的重参数化卷积2.3.1 结构重参化原理2.3.2 什么是计划的重参数化卷积2.4 标签匹配策略论文: Trainable bag-…

【网络】协议与序列化反序列化

目录 一、相关概念 二、自定义协议 三、编写服务器 四、编写客户端 五、JSON 六、补充内容 一、相关概念 在《网络编程套接字》中&#xff0c;我们实现了服务器与客户端之间字符串的通信。但是更多的时候&#xff0c;需要传输的不仅仅是字符串&#xff0c;而是结构化的数…

奇思 妙想

一. main方法可以被其它方法调用吗&#xff1f; 在C语言中&#xff0c;一个工程内只能声明一个main函数&#xff0c;如果声明多个&#xff0c;则程序无法运行然后报错。Java则不同&#xff0c;Java在一个工程内&#xff0c;可以声明多个main方法&#xff0c;但在程序执行时&am…

搭建OIDC Provider,以Golang为例

搭建OIDC Provider&#xff0c;以Golang为例 1 需求 结合对OIDC&#xff1a;https://blog.csdn.net/weixin_45747080/article/details/131810562的理解&#xff0c;我尝试自己搭建OIDC的demo。在搭建demo之前&#xff0c;我需要先确定我想要实现成什么样子。以上文提到的http…

【算法|动态规划No.6】leetcode63. 不同路径Ⅱ

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

使用diagrams画架构图

序 最近发现一个画架构图的神器diagrams&#xff0c;提供了很多云厂商及开源组件的图标&#xff0c;相比于C4-PlantUML显得更专业一点。 之前写过技术文档画图工具箱&#xff0c;diagrams属于diagram as code工具派别。 mac安装 brew install graphviz pip install diagrams…

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

【模型压缩】 LPPN论文阅读笔记

LPPN论文阅读笔记 LPPN: A Lightweight Network for Fast Phase Picking 背景 深度学习模型的问题在于计算复杂度较高&#xff0c;在实际数据处理中需要面临较高的处理代价&#xff0c;且需要专用的加速处理设备&#xff0c;如GPU。随着数据累积&#xff0c;迫切需要设计一种…

IDE/mingw下动态库(.dll和.a文件)的生成和部署使用(对比MSVC下.dll和.lib)

文章目录 概述问题的产生基于mingw的DLL动态库基于mingw的EXE可执行程序Makefile文件中使用Qt库的\*.a文件mingw下的*.a 文件 和 *.dll 到底谁起作用小插曲 mingw 生成的 \*.a文件到底是什么为啥mingw的dll可用以编译链接过程转换为lib引导文件 概述 本文介绍了 QtCreator mi…