【LeetCode每日一题合集】2023.8.14-2023.8.20(⭐切披萨3n块披萨)
文章目录
- 617. 合并二叉树
- 833. 字符串中的查找与替换(模拟)
- 2682. 找出转圈游戏输家(模拟)
- 1444. 切披萨的方案数(⭐⭐⭐⭐⭐)
- 解法——从递归到递推到优化(二维前缀和+记忆化搜索)
- 1388. 3n 块披萨(⭐⭐⭐⭐⭐脑筋急转弯:转换问题)
- 解法——将问题转化为:选择n个披萨,且任意两个数不能相邻,求这n个数的最大值(环形打家劫舍 + 最多买卖k次的股票)
- 2235. 两整数相加(真·梦开始的地方)
- 2236. 判断根结点是否等于子结点之和(真·梦开始的地方2)
617. 合并二叉树
https://leetcode.cn/problems/merge-two-binary-trees/
提示:
两棵树中的节点数目在范围 [0, 2000] 内
-10^4 <= Node.val <= 10^4
class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {if (root1 == null) return root2;else if (root2 == null) return root1;root1.val += root2.val;root1.left = mergeTrees(root1.left, root2.left);root1.right = mergeTrees(root1.right, root2.right);return root1;}
}
833. 字符串中的查找与替换(模拟)
https://leetcode.cn/problems/find-and-replace-in-string/
只看题面比较难以理解题目意思,得看一个示例:
提示:
1 <= s.length <= 1000
k == indices.length == sources.length == targets.length
1 <= k <= 100
0 <= indexes[i] < s.length
1 <= sources[i].length, targets[i].length <= 50
s 仅由小写英文字母组成
sources[i] 和 targets[i] 仅由小写英文字母组成
class Solution {public String findReplaceString(String s, int[] indices, String[] sources, String[] targets) {int n = s.length();String[] ans = new String[n]; // 存储每个位置被换成了什么for (int i = 0; i < indices.length; ++i) {// 检查是否需要替换if (indices[i] + sources[i].length() <= n && sources[i].equals(s.substring(indices[i], indices[i] + sources[i].length()))) {ans[indices[i]] = targets[i];for (int j = indices[i] + 1; j < indices[i] + sources[i].length(); ++j) ans[j] = "";}}// 没有被替换的位置还是保持原样for (int i = 0; i < n; ++i) {if (ans[i] == null) ans[i] = s.substring(i, i + 1);}return String.join("", ans);}
}
2682. 找出转圈游戏输家(模拟)
https://leetcode.cn/problems/find-the-losers-of-the-circular-game/
提示:
1 <= k <= n <= 50
class Solution {public int[] circularGameLosers(int n, int k) {int[] cnt = new int[n];int l = n;for (int i = 0, s = k; cnt[i] == 0; i = (i + s) % n, s += k) {l--;cnt[i]++;}int[] ans = new int[l];for (int i = 0, j = 0; i < n; ++i) {if (cnt[i] == 0) ans[j++] = i + 1;}return ans;}
}
为方便取模运算,循环中的下标可以从 0 开始,在返回时再加一。
1444. 切披萨的方案数(⭐⭐⭐⭐⭐)
https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/
提示:
1 <= rows, cols <= 50
rows == pizza.length
cols == pizza[i].length
1 <= k <= 10
pizza 只包含字符 'A' 和 '.' 。
解法——从递归到递推到优化(二维前缀和+记忆化搜索)
https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/solutions/2392051/ji-bai-100cong-di-gui-dao-di-tui-dao-you-dxz5/
定义 dfs(c, i, j) 表示把左上角在 (i, j),右下角在 (m - 1, n - 1) 的子矩阵切 c 刀,每块都至少包含一个苹果的方案数。
class Solution {static final int MOD = (int)1e9 + 7;int[][][] memo;public int ways(String[] pizza, int k) {MatrixSum ms = new MatrixSum(pizza);int m = pizza.length, n = pizza[0].length();memo = new int[k][m][n];for (int i = 0; i < k; ++i) {for (int j = 0; j < m; ++j) {Arrays.fill(memo[i][j], -1);}}return dfs(k - 1, 0, 0, ms, m, n);}public int dfs(int c, int i, int j, MatrixSum ms, int m, int n) {if (c == 0) { // 不能再切了,检查是否还剩下苹果return ms.query(i, j, m, n) > 0? 1: 0;} if (memo[c][i][j] != -1) return memo[c][i][j];int res = 0;// 枚举竖直切for (int j2 = j + 1; j2 < n; ++j2) {if (ms.query(i, j, m, j2) > 0) {res = (res + dfs(c - 1, i, j2, ms, m, n)) % MOD;}}// 枚举水平切for (int i2 = i + 1; i2 < m; ++i2) {if (ms.query(i, j, i2, n) > 0) {res = (res + dfs(c - 1, i2, j, ms, m, n)) % MOD;}}return memo[c][i][j] = res;}
}// 二维前缀和模板('A'的ASCII码最低位为1,'.'的ASCII码的最低位为0)
class MatrixSum {private final int[][] sum;public MatrixSum (String[] matrix) {int m = matrix.length, n = matrix[0].length();sum = new int[m + 1][n + 1];for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {sum[i + 1][j + 1] = (matrix[i].charAt(j) & 1) + sum[i + 1][j] + sum[i][j + 1] - sum[i][j];}}}// 返回左上角为(r1,c1),右下角为(r2-1,c2-1)的子矩阵的元素和public int query(int r1, int c1, int r2, int c2) {return sum[r2][c2] - sum[r2][c1] - sum[r1][c2] + sum[r1][c1];}
}
1388. 3n 块披萨(⭐⭐⭐⭐⭐脑筋急转弯:转换问题)
https://leetcode.cn/problems/pizza-with-3n-slices/
提示:
1 <= slices.length <= 500
slices.length % 3 == 0
1 <= slices[i] <= 1000
解法——将问题转化为:选择n个披萨,且任意两个数不能相邻,求这n个数的最大值(环形打家劫舍 + 最多买卖k次的股票)
有点像 环形打家劫舍 + 最多买卖k次的股票 的结合。
dp[i][j] 表示考虑 0 ~ i 下标的 slices,购买 j 个最大价值。
class Solution {public int maxSizeSlices(int[] slices) {int n = slices.length;int a = op(slices, 0, n - 2), b = op(slices, 1, n - 1);return Math.max(a, b);}public int op(int[] slices, int start, int end) {int n = end - start + 1, m = (n + 1) / 3;int[][] dp = new int[n][m + 1];for (int i = 0; i < n; ++i) Arrays.fill(dp[i], Integer.MIN_VALUE);dp[0][0] = 0;dp[0][1] = slices[start];dp[1][0] = 0;dp[1][1] = Math.max(slices[start], slices[start + 1]);for (int i = 2; i < n; ++i) {dp[i][0] = 0;for (int j = 1; j <= m; ++j) {dp[i][j] = Math.max(dp[i - 1][j], dp[i - 2][j - 1] + slices[i + start]);}}return dp[n - 1][m];}
}
2235. 两整数相加(真·梦开始的地方)
https://leetcode.cn/problems/add-two-integers/
提示:
-100 <= num1, num2 <= 100
class Solution {public int sum(int num1, int num2) {return num1 + num2;}
}
2236. 判断根结点是否等于子结点之和(真·梦开始的地方2)
https://leetcode.cn/problems/root-equals-sum-of-children/description/
提示:
树只包含根结点、左子结点和右子结点
-100 <= Node.val <= 100
class Solution {public boolean checkTree(TreeNode root) {return root.left.val + root.right.val == root.val;}
}
相关文章:

【LeetCode每日一题合集】2023.8.14-2023.8.20(⭐切披萨3n块披萨)
文章目录 617. 合并二叉树833. 字符串中的查找与替换(模拟)2682. 找出转圈游戏输家(模拟)1444. 切披萨的方案数(⭐⭐⭐⭐⭐)解法——从递归到递推到优化(二维前缀和记忆化搜索) 1388…...

通过ref 操作dom , 点击按钮后跳转到页面指定图片位置
滚动图片到视图 定义了一个名为 scrollToIndex 的函数,它接受一个参数 index。当按钮被点击时,这个函数会被调用,并根据传入的 index 值来滚动到对应的图片。 以 alt 来标记图片位置 alt“Tom” import { useRef } from "react";c…...

QT 设置应用程序图标
1.下载xx.ico图标:ico网址 2.在线PNG转换ICO:png在线转换ico 3.添加图标资源 1)新建文件路径 2)添加图片资源 3)在 .pro文件里面添加图片 4)将xx.ico放到工程目录,编译完可以看到xx.exe的图标…...

牛客网刷题
牛客网刷题-C&C 2023年9月3日15:58:392023年9月3日16:37:01 2023年9月3日15:58:39 2023年9月3日16:37:01 整型常量和实型常量的区别...

ES6核心语法
主要记录学习ES6的语法 1、let和const 同es5中的var来声明变量。三者的区别分别是: var声明的变量存在变量提升,先声明未赋值,值为undefined。且变量声明可在函数块内使用。变量声明之后可以重复声明let声明的变量无变量提升。作用域是块级…...

python 之import与from import 导入库的解析与差异
文章目录 1. **使用import导入整个模块**:2. **使用from import导入特定内容**:注意事项别名的使用 在Python中,import和from import是用于导入模块中内容的两种不同方式。下面详细介绍它们的用法和差异: 1. 使用import导入整个模…...

python实现MQTT协议(发布者,订阅者,topic)
python实现MQTT协议 一、简介 1.1 概述 本文章针对物联网MQTT协议完成python实现 1.2 环境 Apache-apollo创建brokerPython实现发布者和订阅者 1.3 内容 MQTT协议架构说明 : 利用仿真服务体会 MQTT协议 针对MQTT协议进行测试 任务1:MQTT协议应…...
2023年09月03日-----16:58
协同过滤推荐和矩阵分解本质上有什么不同?协同过滤推荐和矩阵分解是两种推荐系统方法,它们在某些方面有相似之处,但也有一些本质不同之处。 基本原理: 协同过滤推荐:协同过滤是一种基于用户行为数据的推荐方法,它依赖于用户-物品交互数据,如用户的评分或点击历史。协同过…...

HTTP状态码504(Gateway Timeout)报错原因分析和解决办法
文章目录 504报错原因分析一、用户角度1. 代理服务器问题2. 网络问题 二、网站管理员角度1. 服务器负载过重2. 网关配置问题3. 目标服务器响应慢4. IIS/nginx/apache服务关闭5. 维护或故障6. 数据库的慢处理也会导致504 用户角度可以采取哪些措施解决504错误1. 刷新页面2. 检查…...

《凤凰架构》第三章——事务处理
前言 由于一些地方原文感觉不太清楚,有些地方用小林coding的文章代替。 总结 事务处理主要的目的就是要让数据在各种条件下,最终的运行结果都能符合你的期望。要达成这个目标有三点需要满足:原子性(业务要么同时成功࿰…...
音视频添 加水印
一、文字水印 在视频中增加文字水印需要准备的条件比较多,需要有文字字库处理的相关文件,在编译FFmpeg时需要支持FreeType、FontConfig、iconv,系统中需要有相关的字库,在FFmpeg中增加纯字母水印可以使用drawtext滤镜进行支持&am…...
使用Python的requests库与chatGPT进行通信
前言 在人工智能领域,自然语言处理模型如OpenAI GPT-3.5 Turbo具有广泛的应用。虽然官方提供了Python库来与这些模型进行交互,但也有一些人更喜欢使用requests库来自定义请求和处理响应,比如现在很多第三方LLM都提供了与chatGPT类似的http请…...
SASS常用内置函数
1,math 引入:use "sass:math"; 常用函数: ceil($number) - 向上取整floor($number) - 向下取整round($number) - 四舍五入max($number...) - 比较若干数值并取最大值min($number...) - 比较若干数值并取最小值random() - 取0~1之…...

2023年05月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
C/C++编程(1~8级)全部真题・点这里 第1题:怪盗基德的滑翔翼 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。 有一天,怪盗基德像往…...

Emmet 使用笔记小结
Emmet 使用笔记小结 最近在跟视频走 CSS 的教程,然后要写很多的 HTML 结构,就想着总结一下 Emmet 的语法。 Emmet 是一个工具可以用来加速 HTML 和 CSS 的开发过程,不过 emmet 只支持 HTML & XML 文件结构,所以我个人觉得对…...

如何使用Puppeteer进行新闻网站数据抓取和聚合
导语 Puppeteer是一个基于Node.js的库,它提供了一个高级的API来控制Chrome或Chromium浏览器。通过Puppeteer,我们可以实现各种自动化任务,如网页截图、PDF生成、表单填写、网络监控等。本文将介绍如何使用Puppeteer进行新闻网站数据抓取和聚…...

【LeetCode每日一题合集】2023.8.7-2023.8.13(动态规划分治)
文章目录 344. 反转字符串1749. 任意子数组和的绝对值的最大值(最大子数组和)1281. 整数的各位积和之差1289. 下降路径最小和 II解法1——动态规划 O ( n 3 ) O(n^3) O(n3)解法2——转移过程优化 O ( n 2 ) O(n^2) O(n2) ⭐ 1572. 矩阵对角线元素的和解法…...

微信小程序修改vant组件样式
1 背景 在使用vant组件开发微信小程序的时候,想更改vant组件内部样式,达到自己想要的目的(van-grid组件改成宫格背景色为透明,默认为白色),官网没有示例,通过以下几步修改成功。 2 步骤 2.1 …...

yum 、rpm、yumdownloader、repotrack 学习笔记
1 Linux 包管理器概述 rpm的使用: rpm -ivh filename.rpm#这列出该packageName(包名)安装的所有文件列表。 rpm -ql packageName #查询已安装的该packageName的详细信息,包括版本、发布日期等。 rpm -qi packageName #列出该pac…...
python检测CPU占用、内存和磁盘剩余空间 脚本
python检测CPU占用、内存和磁盘剩余空间 脚本。后续将其加入到计划列表中即可 # codingutf-8 import time import psutil import osimport smtplibfrom email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # email 用于构建邮件内容 from email…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...