Leetcode - 周赛401

目录

一,3178. 找出 K 秒后拿着球的孩子

二,3179. K 秒后第 N 个元素的值

三,3180. 执行操作可获得的最大总奖励 I

四,3181. 执行操作可获得的最大总奖励 II


一,3178. 找出 K 秒后拿着球的孩子

本题可以直接模拟,遇到 0 或 n - 1 下标,就反转一下。

代码如下:

class Solution {public int numberOfChild(int n, int k) {int i = 0, t = 1;while(k > 0){i += t;if(i == 0 || i == n-1){t *= -1;}k--;}return i;}
}

二,3179. K 秒后第 N 个元素的值

本题也是一道模拟题,对数组 a 不断的求前缀和,最后返回a[n-1].

代码如下:

class Solution {public int valueAfterKSeconds(int n, int k) {int MOD = (int)1e9 + 7;int[] a = new int[n];Arrays.fill(a, 1);while(k > 0){for(int i=1; i<n; i++){a[i] = (a[i] + a[i-1])%MOD;}k--;}return a[n-1];}
}

三,3180. 执行操作可获得的最大总奖励 I

本题可以使用dfs中的选或不选来做,这里需要知道当前的下标 i ,以及前面所选的数的和 x,需要使用 x < rewardValues[i] 来判断该点能否选。(注意,题目对选择的下标没有进行限制,我们可以先将数组排序,这样就只需要向后遍历)

定义 dfs(i,x):在[0,i)所选择的所有数的和为x时,[i,n]的最大总奖励。

  • 选择 i 下标(必须先满足 x < rewardValues[i]),这时下一个状态就是 dfs(i+1,x+rewardValues[i])
  • 不选 i 下标,下一个状态是 dfs(i+1, x)
  • 结束条件,i == n,返回 0
  • 返回两者的较大值

这里记忆化的时候只需要记录 x 就行,我们只需要关注在当前和为 x 时,能取到的最大值memo[x],代码如下:

class Solution {public int maxTotalReward(int[] rewardValues) {Arrays.sort(rewardValues);memo = new int[4001];Arrays.fill(memo, -1);return dfs(0,0,rewardValues);}int[] memo;int dfs(int i, int x, int[] rewardValues){if(memo[x] != -1) return memo[x];if(i == rewardValues.length) return 0;int res = dfs(i+1, x, rewardValues);if(x < rewardValues[i]){res = Math.max(res, dfs(i+1, x+rewardValues[i], rewardValues)+rewardValues[i]);}return memo[x] = res;}
}

递推做法(0-1背包)

定义f[i][j]:能否从前 i 个数得到总奖励为 j

  • 选(满足 j > rewardValues[i] && j-rewardValues[i] < rewardValues[i]),f [ i ][ j ] = f [ i-1 ][ j-rewardValues[i] ]
  • 不选,f [ i ][ j ] = f [ i-1 ][ j ]
  • f [ i ][ j ] = f [ i-1 ][ j ] || f [ i-1 ][ j-rewardValues[i] ]
class Solution {public int maxTotalReward(int[] rewardValues) {Arrays.sort(rewardValues);boolean[] f = new boolean[4001];int res  = 0;f[0] = true;for(int i=0; i<rewardValues.length; i++){for(int x=rewardValues[i]-1; x>=0; x--){f[x+rewardValues[i]] = f[x+rewardValues[i]] || f[x];res = Math.max(res,f[x+rewardValues[i]]?x+rewardValues[i]:res);}}return res;}
}

四,3181. 执行操作可获得的最大总奖励 II

该问无法使用上述的做法,还需要进行优化,这里使用的是 bitset优化,它的原理就是直接使用二进制进行上述的或运算,这样就可以优化掉一层for循环。这里二进制位1-表示能得到当前数,0-表示不能得到当前数。代码如下:

//这里使用py是因为更加直接易懂
class Solution:def maxTotalReward(self, rewardValues: List[int]) -> int:f = 1for v in sorted(rewardValues):mask = (1 << v) - 1# t = (f & mask) << v : 表示如果选择v时,且 x < v 时, x + v 的所有能表示的值# f |= t : 为了计算不选择v时,x 的所有能表示的值f |= (f & mask) << vreturn f.bit_length() - 1//Java版
import java.math.BigInteger;class Solution {public int maxTotalReward(int[] rewardValues) {BigInteger f = BigInteger.ONE;for (int v : Arrays.stream(rewardValues).distinct().sorted().toArray()) {BigInteger mask = BigInteger.ONE.shiftLeft(v).subtract(BigInteger.ONE);f = f.or(f.and(mask).shiftLeft(v));}return f.bitLength() - 1;}
}

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

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

相关文章

新手必读:平面设计自学全攻略

据说平面设计的门槛很低&#xff0c;零基础也很容易上手。但是据我所知许多初学者在自学平面设计时面临以下瓶颈&#xff1a;为什么跟着大神自学平面设计帖子依旧学不会呢&#xff0c;明明报了许多平面设计自学课程&#xff0c;但仍然不会自主设计&#xff0c;初学者到底从哪里…

XMind 2024软件最新版下载及详细安装教程

​人所共知的是XMind 在公司和教育领域都有很广泛的应用&#xff0c;在公司中它能够用来进行会议管理、项目管理、信息管理、计划和XMind 被认为是一种新一代演示软件的模式。也就是说XMind不仅能够绘制思维导图&#xff0c;还能够绘制鱼骨图、二维图、树形图、逻辑图、组织结构…

数字乡村:绘就乡村振兴的智慧新画卷

在乡村振兴战略的宏伟蓝图下&#xff0c;“数字乡村”作为新时代农村现代化的重要抓手&#xff0c;正悄然改变着中国乡村的面貌。本文旨在深度剖析数字乡村建设的核心价值、关键技术、成功案例以及未来展望&#xff0c;为乡村振兴战略提供前瞻性的思考与启示。 数字乡村的核心价…

SAP PI/PO获取文件名及路径

Sender Adapter设置如下&#xff1a; UDF定义如下&#xff1a; DynamicConfiguration conf (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); //get file name DynamicConfigurationKey keyFile…

什么是Amazon Relational Database Service(Amazon RDS)及实践体验

目录 前言亚马逊云服务免费体验中心三种优惠类型 Amazon RDS什么是Amazon RDS为什么选择 Amazon RDS&#xff1f;Amazon RDS 的优势关键功能详情工作原理Amazon RDSAmazon RDS CustomAmazon RDS on Amazon Outposts 实践创建并连接到 MySQL 数据库实例一、创建 EC2 实例二、创建…

SpringCloudAlibaba组件之间的版本兼容问题

我之前的SpringCloud项目以及使用的组件的版本是这些 但是我不知道具体的版本兼容问题&#xff0c;以及各种组件之间对应的版本 想要使用我们的springcloud和springcloudAlibaba组件&#xff0c;我们就要版本对应&#xff0c;不然就是一堆依赖报错&#xff0c;要不就是缺了这个…

百望云助力北京市首批“乐企平台”直连企业—北京城建集团成功开具乐企数电票

近日&#xff0c;北京城建集团完成i城建平台与国家税务总局乐企平台的对接&#xff0c;成功开具出建筑行业数电票。这意味着北京城建集团成为北京市首批实现乐企平台直连的企业&#xff0c;标志着集团在财税数字化上取得重要进展。 百望云作为项目服务方&#xff0c;共同见证了…

如何删除电脑自带的游戏

要删除电脑自带的游戏&#xff0c;如扫雷和纸牌&#xff0c;你可以按照以下步骤操作&#xff0c;这些步骤基于Windows操作系统&#xff1a; 对于Windows 7及其更早版本 打开控制面板选择“程序”打开或关闭Windows功能找到并取消勾选游戏 对于Windows 10及更高版本 打开“设…

SpringBoot 实现全局异常处理

为什么要使用全局异常处理&#xff1f; 减少冗余代码&#xff1a; 在不使用全局异常处理器的情况下&#xff0c;项目中各层可能会出现大量的try {…} catch {…} finally {…}代码块&#xff0c;这些代码块不仅冗余&#xff0c;还影响代码的可读性。全局异常处理器允许我们在一…

大润发超市购物卡怎么用?

收到大润发超市的礼品卡以后&#xff0c;我才发现&#xff0c;最近的大润发也得十来公里 为了100块的大润发打车也太不划算了 叫外送也不在配送范围内 最后没办法&#xff0c;在收卡云上出掉了&#xff0c;还好最近价格不错&#xff0c;也不亏&#xff0c;收卡云的到账速度也…

Windows反截屏开发实现

文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力&#xff0c;所谓反截屏就是我们无法通过截图软件&#xff08;微信&#xff0c;QQ&#xff0c;截图等程序&#xff09;截取桌面的…

redis 缓存jwt令牌设置更新时间 BUG修复

大家好&#xff0c;今天我又又又来了&#xff0c;hhhhh。 上文中 我们永redis缓存了token 但是我们发现了 一个bug &#xff0c;redis中缓存的token 是单用户才能实现的。 就是 我 redis中存储的键 名 为token 值 是jwt令牌 &#xff0c;但是如果 用户a 登录 之后 创建一个…

FlinkCDC 3.1.0 与 Flink 1.18.0 安装及使用 Mysql To Doris 整库同步,使用 pipepline连接器

cd flink-cdc-3.1.0 bin/flink-cdc.sh 会用到 linux的系统环境变量&#xff08;vim /etc/profile配置&#xff09;&#xff0c;使用环境变量 FLINK_HOME flinkcdc & flink 安装及使用&#xff1a; 1、flink-cdc-3.1.0/lib/ 内容如下&#xff1a; 2、flink-cdc-3.1.0/mysql…

MS31211低压、大电流、单全桥驱动

MS31211 是一款低压、大电流、单全桥驱动。它 可应用于低电压及电池供电的运动控制场合&#xff0c;并且内 置电荷泵来提供内部功率 NMOS 所需的栅驱动电压。 MS31211 可以提供最高 3.2A 的峰值电流&#xff0c;其功 率电源供电范围从 1.8V 到 10V &#xff0c;逻…

JUC并发编程-第二天:线程高级部分

线程高级部分 线程不安全原子性可见性有序性&#xff08;指令重排&#xff09; 线程不安全 多线程下并发同时对共享数据进行读写&#xff0c;会造成数据混乱线程不安全 当多线程下并发访问临界资源时&#xff0c;如果破坏其原子性、可见性、有序性&#xff0c;可能会造成数据不…

JavaEE多线程(2)

文章目录 1..多线程的安全1.1出现多线程不安全的原因1.2解决多线程不安全的⽅法1.3三种典型死锁场景1.4如何避免死锁问题2.线程等待通知机制2.1等待通知的作用2.2等待通知的方法——wait2.3唤醒wait的方法——notify 1…多线程的安全 1.1出现多线程不安全的原因 线程在系统中…

前端练习小项目——视觉冲击卡片

前言&#xff1a; 前言&#xff1a;在学习完HTML和CSS之后&#xff0c;我们就可以开始做一些小项目了&#xff0c;本篇文章所讲的小项目为——视觉冲击卡片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下效果&a…

maxKb+ollama+lama2-chinese 基于知识库+本地模型的知识问答系统

maxKbollamalama2-chinese 基于知识库本地模型的知识问答系统 搭建步骤 搭建maxKb docker run -d --namemaxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data cr2.fit2cloud.com/1panel/maxkb# 用户名: admin # 密码: MaxKB123..github的访问地址&#xff1a;https://…

Vant2组件库的基础应用

目录 一、Picker 选择器 1.1、数组对象处理 1.2、每个选项颜色设置 二、滚动分页加载列表 三、Calendar 日历(可选范围限制) 四、input值过滤 官网&#xff1a;Vant 2 - Mobile UI Components built on Vue 一、Picker 选择器 官网示例数据&#xff1a; columns: [杭州…

计算机网络实验之单交换机互联终端实验

1.网线 4对&#xff0c;8根&#xff0c;RJ-45连接器&#xff08;水晶头&#xff09;&#xff1b; &#xff08;1&#xff09;直通线 双绞线缆两端按照EIA/TIA568B规格连接水晶头&#xff0c;该双绞线为直通线。 橘白1&#xff0c;橘2&#xff0c;绿白3&#xff0c;蓝4&#…