Leetcode 第 369 场周赛题解

Leetcode 第 369 场周赛题解

  • Leetcode 第 369 场周赛题解
    • 题目1:2917. 找出数组中的 K-or 值
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:2918. 数组的最小相等和
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:2919. 使数组变美的最小增量运算数
      • 思路
      • 代码
      • 复杂度分析
    • 题目4:2920. 收集所有金币可获得的最大积分
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 369 场周赛题解

在这里插入图片描述

题目1:2917. 找出数组中的 K-or 值

思路

模拟。

枚举每个比特位,遍历数组,如果第 i 个比特位上的 1 的个数 ≥ k,则把 2i 加到答案中。

代码

/** @lc app=leetcode.cn id=2917 lang=cpp** [2917] 找出数组中的 K-or 值*/// @lc code=start
class Solution
{
public:int findKOr(vector<int> &nums, int k){int k_or = 0;for (int i = 0; i < 32; i++){int count = 0;for (const int &num : nums)if (num & (1 << i))count++;if (count >= k)k_or += (1 << i);}return k_or;}
};
// @lc code=end

复杂度分析

时间复杂度:O(nlogU),其中 n 为数组 nums 的长度,U=max⁡(nums)。

空间复杂度:O(1)。

题目2:2918. 数组的最小相等和

思路

贪心。

设数组 nums1 的元素总和为 sum1,其中 0 的个数为 countZero1;数组 nums2 的元素总和为 sum2,其中 0 的个数为 countZero2。

题目要求我们必须将两个数组中的 所有 0 替换为严格正整数,并且满足两个数组中所有元素的和相等 。

最后返回最小相等和 ,如果无法使两数组相等,则返回 -1 。

基于贪心的思想,把所有的 0 改成 1,所有元素的和为最小。于是,数组 nums1 的最小和为 sum1 + countZero1,数组 nums2 的最小和为 sum2 + countZero2。

分类讨论:

  • 如果 sum1 < sum2 + countZero2 && countZero1 == 0,说明无法将数组 nums1 修改到和修改后的数组 nums2 的和相等,返回 -1。
  • 如果 sum2 < sum1 + countZero1 && countZero2 == 0,说明无法将数组 nums2 修改到和修改后的数组 nums1 的和相等,返回 -1。
  • 其他情况,都能得到最小相等和。最小相等和为两个最小和的较大值,即 max(sum1 + countZero1, sum2 + countZero2)。

代码

/** @lc app=leetcode.cn id=2918 lang=cpp** [2918] 数组的最小相等和*/// @lc code=start
class Solution
{
public:long long minSum(vector<int> &nums1, vector<int> &nums2){long long sum1 = 0, sum2 = 0;int countZero1 = 0, countZero2 = 0;for (const int num : nums1){if (num)sum1 += num;elsecountZero1++;}for (const int num : nums2){if (num)sum2 += num;elsecountZero2++;}if (sum1 < sum2 + countZero2 && countZero1 == 0)return -1;if (sum2 < sum1 + countZero1 && countZero2 == 0)return -1;return max(sum1 + countZero1, sum2 + countZero2);}
};
// @lc code=end

复杂度分析

时间复杂度:O(n+m),其中 n 为数组 nums1 的长度,m 为数组 nums2 的长度。

空间复杂度:O(1)。

题目3:2919. 使数组变美的最小增量运算数

思路

动态规划。

把大于 k 的元素视作 k。

由于大于 3 的子数组必然包含等于 3 的子数组,问题转换成:每个长为 3 的子数组都需要包含至少一个 k。

设 dp[i] 表示表示修改第 i 项并使前 i 项变为美丽数组的最小修改次数。

初始化时,dp[0] = max(0, k - nums[0])dp[1] = max(0, k - nums[1])dp[2] = max(0, k - nums[2])

状态转移方程:

dp[i] = min{dp[i−3], dp[i−2], dp[i−1]} + max{0,  k−nums[i]}

使原数组变为美丽数组的最小修改次数 ans = min{dp[n−3], dp[n−2], dp[n−1]}

代码

/** @lc app=leetcode.cn id=2919 lang=cpp** [2919] 使数组变美的最小增量运算数*/// @lc code=start
class Solution
{
public:long long minIncrementOperations(vector<int> &nums, int k){int n = nums.size();// dp[i] 表示表示修改第 i 项并使前 i 项变为美丽数组的最小修改次数vector<long long> dp(n, 0);// 初始化for (int i = 0; i < 3; i++)dp[i] = max(0, k - nums[i]);// 状态转移for (int i = 3; i < n; i++){// 状态转移方程dp[i] = min(dp[i - 3], min(dp[i - 2], dp[i - 1])) + max(0, k - nums[i]);}return min(dp[n - 3], min(dp[n - 2], dp[n - 1]));}
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是数组 nums 的长度。

空间复杂度:O(n),其中 n 是数组 nums 的长度。

题目4:2920. 收集所有金币可获得的最大积分

思路

树型 DP。

题解:树 DP

代码

/** @lc app=leetcode.cn id=2920 lang=cpp** [2920] 收集所有金币可获得的最大积分*/// @lc code=start
class Solution
{
public:int maximumPoints(vector<vector<int>> &edges, vector<int> &coins, int K){int n = coins.size();const int MAXP = 20;// 建图vector<int> e[n];for (auto &edge : edges){e[edge[0]].push_back(edge[1]);e[edge[1]].push_back(edge[0]);}const long long INF = 1e18;long long f[n][MAXP][2];for (int i = 0; i < n; i++)for (int j = 0; j < MAXP; j++)f[i][j][0] = f[i][j][1] = -INF;// 树 dpfunction<void(int, int)> dp = [&](int sn, int fa){long long now = coins[sn];for (int j = 0; j < MAXP; j++){f[sn][j][0] = now - K;if (j > 0)f[sn][j][1] = now;now >>= 1;}// 枚举子节点的操作for (int fn : e[sn])if (fn != fa){dp(fn, sn);for (int j = 0; j < MAXP; j++){// 这里的 min 是因为我们只考虑 log 次操作long long best = max(f[fn][j][0], f[fn][min(MAXP - 1, j + 1)][1]);f[sn][j][0] += best;f[sn][j][1] += best;}}};dp(0, -1);long long ans = 0;for (int j = 0; j < MAXP; j++)ans = max({ans, f[0][j][0], f[0][j][1]});return ans;}
};
// @lc code=end

复杂度分析

时间复杂度:O(nlogU),其中 n 为 coins 的长度,U=max⁡(coins)。

空间复杂度:O(nlog⁡U)。

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

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

相关文章

Lec13 Sleep Wake up

进程切换的流程 一个进程出于某种原因想要进入休眠状态&#xff0c;比如说出让CPU或者等待数据&#xff0c;它会先获取自己的锁&#xff1b;之后进程将自己的状态从RUNNING设置为RUNNABLE&#xff1b;之后进程调用switch函数&#xff0c;其实是调用sched函数在sched函数中再调…

2023年11月编程语言流行度排名

点击查看最新编程语言流行度排名&#xff08;每月更新&#xff09; 2023年11月编程语言流行度排名 编程语言流行度排名是通过分析在谷歌上搜索语言教程的频率而创建的 一门语言教程被搜索的次数越多&#xff0c;大家就会认为该语言越受欢迎。这是一个领先指标。原始数据来自…

折叠旗舰新战局:华为先行,OPPO接棒

乌云中的曙光&#xff0c;总能带给人希望。 全球智能手机出货量已经连续八个季度下滑&#xff0c;行业里的乌云挥之不散。不过&#xff0c;也能看到高端市场逆势上涨&#xff0c;散发光亮。个中逻辑在于&#xff0c;当前换机周期已经达到了34个月&#xff0c;只有创新产品才能…

使用遗传算法优化BP神经网络实现非线性函数拟合

大家好&#xff0c;我是带我去滑雪&#xff01; 非线性函数拟合是一种用于找到与给定数据点集合最好匹配的非线性函数的过程。非线性函数拟合通常用于以下情况&#xff1a; 数据趋势不是线性的&#xff1a;当数据点之间的关系不能用线性方程来表示时&#xff0c;需要使用非线性…

快速解决mfc140u.dll丢失问题,找不到mfc140u.dll修复方法分享

在计算机使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是某些dll文件丢失。最近&#xff0c;我就遇到了一个关于mfc140u.dll丢失的问题。mfc140u.dll是Microsoft Foundation Class&#xff08;MFC&#xff09;库中的一个动态链接库文件&#xff0c;它包…

JSP通用材料收集归档系统eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 通用材料收集归档系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&#xff0c…

接口---默认方法

用户操作界面 package Default;public class Dome02interface {public static void main(String[] args) {// 创建实现类对象 // MyInterfaceDefaultA A new MyInterfaceDefaultA(); // A.method01(); // System.out.println("--------------"); // 调用默认方…

【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.基础知识介绍1&#xff09;虚函数&a…

SpringBoot整合Mybatis+人大金仓(kingbase8)

陈老老老板&#x1f9b8; &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;国产数据库-人大金仓&#xff08;kingbase8&#xff09;&#xff08;主要讲一些人大金仓数据库相关的内容&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;本文讲一下Mybatis框架整合…

Centos7下搭建H3C log服务器

rsyslogH3C 安装rsyslog服务器 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config && setenforce 0centos7服务器&#xff0c;通过yum安装rsyslog yum -y install rsysl…

Swift语言配合HTTP写的一个爬虫程序

下段代码使用Embassy库编写一个Swift爬虫程序来爬取jshk的内容。我会使用proxy_host为duoip&#xff0c;proxy_port为8000的爬虫IP服务器。 使用Embassy库编写一个Swift爬虫程序可以实现从网页上抓取数据的功能。下面是一个简单的步骤&#xff1a; 1、首先&#xff0c;需要在X…

vue使用websocket与springboot通信

WebSocket是HTML5下一种新的协议&#xff0c;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中&#xff0c;都要用到websocket&#xff0c;使得前端页面与后端页进行实时通信&#xff0c;例如&#xff0c;实时查询…

Vue3:自定义图标选择器(包含 SVG 图标封装)

文章目录 一、准备工作&#xff08;在 Vue3 中使用 SVG&#xff09;二、封装 SVG三、封装图标选择器四、Demo 效果预览&#xff1a; 一、准备工作&#xff08;在 Vue3 中使用 SVG&#xff09; 本文参考&#xff1a;https://blog.csdn.net/houtengyang/article/details/1290431…

Tcl语言:SDC约束命令create_generated_clock详解(下)

相关阅读 Tcl语言https://blog.csdn.net/weixin_45791458/category_12488978.html?spm1001.2014.3001.5482 设定生成时钟特性 前文的末尾提到&#xff0c;当使用-divide by或-multiply_by选项创建生成时钟时&#xff0c;会根据master clock的时钟周期派生出生成时钟的周期&am…

yum工具的使用

yum工具的使用 rpm的弊端 前面我们讲了下rpm&#xff0c;那么rpm有什么弊端呢&#xff1f;其弊端是显而易见的&#xff0c;当用rpm安装软件时&#xff0c;若遇到有依赖关系的软件&#xff0c;必须先安装依赖的软件才能继续安装我们要安装的软件&#xff0c;当依赖关系很复杂的…

[CISCN 2023 初赛]go_session

文章目录 考点代码审计main.goroute.goIndex函数Admin函数Flask函数 解题过程伪造session获取server.py构造payload覆盖server.py命令执行 考点 session伪造&#xff0c;pongo2模板注入&#xff0c;debug模式覆盖源文件 代码审计 main.go package mainimport ("github.c…

汇编-变量

.386 .model flat,stdcall option casemap:none.data sum DWORD 0 ;创建一个全局变量&#xff0c;取名sum,初始化0 sum1 DWORD ? ;创建一个全局变量sum1,无初始化 ;问号(?)初始化值使得变量未被初始化&#xff0c;这意味着在运行时才会为该变量分配一个值 ;变量名…

【Node.js入门】1.3 开始开发Node.js应用程序

1.3 开始开发Node.js应用程序 学习目标 &#xff08;1&#xff09;熟悉开发工具Visual Studio Code的基本使用&#xff1b; &#xff08;2&#xff09;掌握Node.js应用程序的编写、运行和调试的基本方法。 构建第一个 Node.js应用程序 代码 const http require("htt…

【小技巧】WPS统计纯汉字(不计标点符号)

【小技巧】WPS统计纯汉字&#xff08;不计标点符号&#xff09; 首先&#xff0c;CtrlF打开查找页面&#xff1a; 选择“高级搜索”&#xff0c;然后勾选“使用通配符”&#xff0c;然后在“查找内容”后面输入&#xff1a;[一-﨩]。注意&#xff1a;一定要带“[]”和“-”且…

web前端——HTML+CSS实现九宫格

web前端——HTMLCSS实现九宫格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…