Leetcode 第 143 场双周赛题解

Leetcode 第 143 场双周赛题解

  • Leetcode 第 143 场双周赛题解
    • 题目1:3345. 最小可整除数位乘积 I
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:3346. 执行操作后元素的最高频率 I
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:3347. 执行操作后元素的最高频率 II
    • 题目4:3348. 最小可整除数位乘积 II
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 143 场双周赛题解

题目1:3345. 最小可整除数位乘积 I

思路

至多循环 10 次,一定会遇到个位数为 0 的数字,数位乘积是 0,一定是 t 的倍数。

所以暴力枚举即可。

代码

/** @lc app=leetcode.cn id=3345 lang=cpp** [3345] 最小可整除数位乘积 I*/// @lc code=start
class Solution
{
public:int smallestNumber(int n, int t){for (int i = n; i <= n + 10; i++)if (digitMultSum(i) % t == 0)return i;return -1;}// 辅函数 - 求数字 x 的各数位之积int digitMultSum(int x){int res = 1;while (x){res *= (x % 10);x /= 10;}return res;}
};
// @lc code=end

复杂度分析

时间复杂度:O(logn)。

空间复杂度:O(1)。

题目2:3346. 执行操作后元素的最高频率 I

思路

差分数组。

设 x=nums[i]。x 可以变成 [x−k,x+k] 中的整数。注意对于同一个 nums[i] 至多操作一次。

反过来想,对于一个整数 y,有多少个数可以变成 y?

这可以用差分计算,也就是把 [x−k,x+k] 中的每个整数的出现次数都加一。

计算差分的前缀和,就得到了有 sumD 个数可以变成 y。

如果 y 不在 nums 中,那么 y 的最大频率为 min(sumD,numOperations)。

如果 y 在 nums 中,且出现了 cnt 次,那么有 sumD−cnt 个其他元素(不等于 y 的数)可以变成 y,但这不能超过 numOperations,所以有 min(sumD−cnt,numOperations) 个其他元素可以变成 y,再加上 y 自身出现的次数 cnt,得到 y 的最大频率为 cnt+min(sumD−cnt,numOperations)=min(sumD,cnt+numOperations)。

代码

/** @lc app=leetcode.cn id=3346 lang=cpp** [3346] 执行操作后元素的最高频率 I*/// @lc code=start
class Solution
{
public:int maxFrequency(vector<int> &nums, int k, int numOperations){unordered_map<int, int> cnt;map<int, int> diff;for (int x : nums){cnt[x]++;diff[x];       // 把 x 插入 diff,以保证下面能遍历到 xdiff[x - k]++; // 把 [x-k, x+k] 中的每个整数的出现次数都加一diff[x + k + 1]--;}int ans = 0, sum_d = 0;for (auto &[x, d] : diff){sum_d += d;ans = max(ans, min(sum_d, cnt[x] + numOperations));}return ans;}
};
// @lc code=end

复杂度分析

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

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

题目3:3347. 执行操作后元素的最高频率 II

同第二题。

题目4:3348. 最小可整除数位乘积 II

思路

题解:https://leetcode.cn/problems/smallest-divisible-digit-product-ii/solutions/2984014/bao-sou-zuo-fa-lei-si-shu-wei-dp-by-endl-nkoo/

代码

/** @lc app=leetcode.cn id=3348 lang=cpp** [3348] 最小可整除数位乘积 II*/// @lc code=start
class Solution
{
public:string smallestNumber(string s, long long t){long long tmp = t;for (int i = 9; i > 1; i--){while (tmp % i == 0){tmp /= i;}}if (tmp > 1){ // t 包含大于 7 的质因子return "-1";}int n = s.length();vector<long long> left_t(n + 1);left_t[0] = t;int i0 = n - 1;for (int i = 0; i < n; i++){if (s[i] == '0'){i0 = i;break;}left_t[i + 1] = left_t[i] / gcd(left_t[i], s[i] - '0');}if (left_t[n] == 1){ // s 的数位之积是 t 的倍数return s;}// 假设答案和 s 一样长for (int i = i0; i >= 0; i--){while (++s[i] <= '9'){long long tt = left_t[i] / gcd(left_t[i], s[i] - '0');int k = 9;for (int j = n - 1; j > i; j--){while (tt % k){k--;}tt /= k;s[j] = '0' + k;}if (tt == 1){return s;}}}// 答案一定比 s 长string ans;for (int i = 9; i > 1; i--){while (t % i == 0){ans += '0' + i;t /= i;}}ans += string(max(n + 1 - (int)ans.length(), 0), '1');ranges::reverse(ans);return ans;}
};
// @lc code=end

复杂度分析

在这里插入图片描述

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

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

相关文章

Spark 之 Aggregate

Aggregate 参考链接&#xff1a; https://github.com/PZXWHU/SparkSQL-Kernel-Profiling 完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式&#xff08; groupingExpressions &#xff09;…

【IDEA】解决总是自动导入全部类(.*)问题

文章目录 问题描述解决方法 我是一名立志把细节说清楚的博主&#xff0c;欢迎【关注】&#x1f389; ~ 原创不易&#xff0c; 如果有帮助 &#xff0c;记得【点赞】【收藏】 哦~ ❥(^_-)~ 如有错误、疑惑&#xff0c;欢迎【评论】指正探讨&#xff0c;我会尽可能第一时间回复…

如何快速将Excel数据导入到SQL Server数据库

工作中&#xff0c;我们经常需要将Excel数据导入到数据库&#xff0c;但是对于数据库小白来说&#xff0c;这可能并非易事&#xff1b;对于数据库专家来说&#xff0c;这又可能非常繁琐。 这篇文章将介绍如何帮助您快速的将Excel数据导入到sql server数据库。 准备工作 这里&…

在centos7中安装SqlDeveloper的Oracle可视化工具

1.下载安装包 &#xff08;1&#xff09;在SqlDeveloper官网下载&#xff08;Oracle SQL Developer Release 19.2 - Get Started&#xff09;对应版本的安装包即可&#xff08;安装包和安装命令如下&#xff09;&#xff1a; &#xff08;2&#xff09;执行完上述命令后&#x…

【动手学深度学习Pytorch】4. 神经网络基础

模型构造 回顾一下感知机。 nn.Sequential()&#xff1a;定义了一种特殊的module。 torch.rand()&#xff1a;用于生成具有均匀分布的随机数&#xff0c;这些随机数的范围在[0, 1)之间。它接受一个形状参数&#xff08;shape&#xff09;&#xff0c;返回一个指定形状的张量&am…

Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现

Spring Boot Vue 基于 RSA 的用户身份认证加密机制实现 什么是RSA&#xff1f;安全需求介绍前后端交互流程前端使用 RSA 加密密码安装 jsencrypt库实现敏感信息加密 服务器端生成RSA的公私钥文件Windows环境 生成rsa的公私钥文件Linux环境 生成rsa的公私钥文件 后端代码实现返…

一键部署 200+ 开源软件的 Websoft9 面板,Github 2k+ 星星

Websoft9面板是一款基于Web的PaaS/Linux面板&#xff0c;可用于在自己的服务器上一键部署200多种热门开源应用&#xff0c;在Github上获得了2k星星。 特点与优势 丰富的开源软件集成&#xff1a;涵盖数据库、Web服务器、企业建站、电商系统、教育系统、中间件、大数据工具等多…

NLP论文速读(MPO)|通过混合偏好优化提高多模态大型语言模型的推理能力

论文速读|Dynamic Rewarding with Prompt Optimization Enables Tuning-free Self-Alignment of Language Models 论文信息&#xff1a; 简介&#xff1a; 本文探讨的背景是多模态大型语言模型&#xff08;MLLMs&#xff09;在多模态推理能力上的局限性&#xff0c;尤其是在链式…

动态规划子数组系列一>等差数列划分

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int numberOfArithmeticSlices(int[] nums) {int n nums.length;int[] dp new int[n];int ret 0;for(int i 2; i < n; i){dp[i] nums[i] - nums[i-1] nums[i-1] - nums[i-2] ? dp[i-1]1 : 0;ret dp[i…

用 React18 构建Tic-Tac-Toe(井字棋)游戏

下面是一个完整的 Tic-Tac-Toe&#xff08;井字棋&#xff09;游戏的实现&#xff0c;用 React 构建。包括核心逻辑和组件分离&#xff0c;支持两人对战。 1. 初始化 React 项目&#xff1a; npx create-react-app tic-tac-toe cd tic-tac-toe2.文件结构 src/ ├── App.js…

前端—Cursor编辑器

在当今快速发展的软件开发领域&#xff0c;效率和质量是衡量一个工具是否优秀的两个关键指标。今天&#xff0c;我要向大家推荐一款革命性的代码编辑器——Cursor&#xff0c;它集成了强大的AI功能&#xff0c;旨在提高开发者的编程效率。以下是Cursor编辑器的详细介绍和推荐理…

uniapp页面样式和布局和nvue教程详解

uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px&#xff0c;一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准&#xff0c;750rpx恰好为屏幕宽度。屏幕变宽&#xff0c;rpx 实际显示效果会等比放大…

Kubernetes 安装配置ingress controller

> 对于Kubernetes的Service&#xff0c;无论是Cluster-Ip和NodePort均是四层的负载&#xff0c;集群内的服务如何实现七层的负载均衡&#xff0c;这就需要借助于Ingress&#xff0c;Ingress控制器的实现方式有很多&#xff0c;比如nginx, Contour, Haproxy, trafik, Istio。…

js批量输入地址获取经纬度

使用js调用高德地图的接口批量输入地址获取经纬度。 以下的请求接口的key请换成你的key。 创建key&#xff1a;我的应用 | 高德控制台 &#xff0c;服务平台选择《Web服务》。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-…

天润融通携手挚达科技:AI技术重塑客户服务体验

业务爆发式增长&#xff0c;但座席服务却跟不上&#xff0c;怎么办&#xff1f; 智能充电领导者的挚达科技就面临过 这样的问题&#xff0c;让我们来看看如何解决。 2010年以来&#xff0c;国内新能源汽车市场进入高速发展期&#xff0c;作为新能源汽车的重要配件&#xff0c…

51c自动驾驶~合集31

我自己的原文哦~ https://blog.51cto.com/whaosoft/12121357 #大语言模型会成为自动驾驶的灵丹妙药吗 人工智能&#xff08;AI&#xff09;在自动驾驶&#xff08;AD&#xff09;研究中起着至关重要的作用&#xff0c;推动其向智能化和高效化发展。目前AD技术的发展主要遵循…

【代码随想录】贪心

455. 分发饼干 题目 随想录 本质&#xff1a; 对于每个孩子&#xff0c;使用可以满足该孩子的最小的饼干。所以对孩子胃口和饼干进行sort排序&#xff0c;依次将大的饼干满足给孩子。 贪心策略&#xff1a; 想一下局部最优&#xff0c;想一下全局最优&#xff0c;如果局部最优…

QWen2.5学习

配置环境 pip install transformers 记得更新一下&#xff1a;typing_extensions pip install --upgrade typing_extensions 安装modelscope modelscope/modelscope: ModelScope: bring the notion of Model-as-a-Service to life. 下载这个仓库的代码上传到服务器解压 推…

存算分离的过去、现在和未来

存算分离架构&#xff0c;作为数据处理领域的一个重要概念&#xff0c;从其最初的雏形到如今广泛应用&#xff0c;经历了多次迭代和变革。雁飞老师在分享中从过去的存算架构&#xff0c;逐步讲述存算分离的演进&#xff0c;现今的存算分离架构的优势及其在 Databend 中的体现&a…

web——upload-labs——第九关——特殊字符::$DATA绕过

特殊字符::$DATA绕过 典型绕过场景 在一些系统中&#xff0c;::$DATA 被用于绕过文件路径的限制。比如&#xff1a; 路径过滤绕过&#xff1a;如果系统有某种机制来检查和限制文件路径&#xff08;例如&#xff0c;禁止访问某些系统目录或敏感文件&#xff09;&#xff0c;通…