当前位置: 首页 > news >正文

【题解】—— LeetCode一周小结46

🌟欢迎来到 我的博客 —— 探索技术的无限可能!


🌟博客的简介(文章目录)


【题解】—— 每日一道题目栏


上接:【题解】—— LeetCode一周小结45

在这里插入图片描述

11.切棍子的最小成本

题目链接:1547. 切棍子的最小成本

有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。例如,长度为 6 的棍子可以标记如下:

在这里插入图片描述

给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置。

你可以按顺序完成切割,也可以根据需要更改切割的顺序。

每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。请参阅第一个示例以获得更直观的解释。

返回切棍子的 最小总成本 。

示例 1:

在这里插入图片描述

输入:n = 7, cuts = [1,3,4,5]

输出:16

解释:按 [1, 3, 4, 5] 的顺序切割的情况如下所示:
在这里插入图片描述

第一次切割长度为 7 的棍子,成本为 7 。第二次切割长度为 6 的棍子(即第一次切割得到的第二根棍子),第三次切割为长度 4
的棍子,最后切割长度为 3 的棍子。总成本为 7 + 6 + 4 + 3 = 20 。 而将切割顺序重新排列为 [3, 5, 1, 4]
后,总成本 = 16(如示例图中 7 + 4 + 3 + 2 = 16)。

示例 2:

输入:n = 9, cuts = [5,6,1,4,2]

输出:22

解释:如果按给定的顺序切割,则总成本为 25 。总成本 <= 25 的切割顺序很多,例如,[4, 6, 5, 2, 1] 的总成本 =
22,是所有可能方案中成本最小的。

提示:

2 <= n <= 10^6

1 <= cuts.length <= min(n - 1, 100)

1 <= cuts[i] <= n - 1

cuts 数组中的所有整数都 互不相同

题解:
方法:记忆化搜索
        

class Solution {public int minCost(int n, int[] cuts) {Arrays.sort(cuts);int m = cuts.length + 2;int[] newCuts = new int[m];System.arraycopy(cuts, 0, newCuts, 1, m - 2);newCuts[m - 1] = n;int[][] memo = new int[m][m];return dfs(0, m - 1, newCuts, memo);}private int dfs(int i, int j, int[] cuts, int[][] memo) {if (i + 1 == j) { // 无需切割return 0;}if (memo[i][j] > 0) { // 之前计算过return memo[i][j];}int res = Integer.MAX_VALUE;for (int k = i + 1; k < j; k++) {res = Math.min(res, dfs(i, k, cuts, memo) + dfs(k, j, cuts, memo));}return memo[i][j] = res + cuts[j] - cuts[i];}
}

12.统计满足 K 约束的子字符串数量 I

题目链接:3258. 统计满足 K 约束的子字符串数量 I

给你一个 二进制 字符串 s 和一个整数 k。

如果一个 二进制字符串 满足以下任一条件,则认为该字符串满足 k 约束:

字符串中 0 的数量最多为 k。
字符串中 1 的数量最多为 k。
返回一个整数,表示 s 的所有满足 k 约束 的
子字符串
的数量。

示例 1:

输入:s = “10101”, k = 1

输出:12

解释:

s 的所有子字符串中,除了 “1010”、“10101” 和 “0101” 外,其余子字符串都满足 k 约束。

示例 2:

输入:s = “1010101”, k = 2

输出:25

解释:

s 的所有子字符串中,除了长度大于 5 的子字符串外,其余子字符串都满足 k 约束。

示例 3:

输入:s = “11111”, k = 1

输出:15

解释:

s 的所有子字符串都满足 k 约束。

提示:

1 <= s.length <= 50

1 <= k <= s.length

s[i] 是 ‘0’ 或 ‘1’。

题解:
方法:滑动窗口
        

class Solution {public int countKConstraintSubstrings(String S, int k) {char[] s = S.toCharArray();int ans = 0;int left = 0;int[] cnt = new int[2];for (int i = 0; i < s.length; i++) {cnt[s[i] & 1]++;while (cnt[0] > k && cnt[1] > k) {cnt[s[left] & 1]--;left++;}ans += i - left + 1;}return ans;}
}

13.统计满足 K 约束的子字符串数量 II

题目链接:3261. 统计满足 K 约束的子字符串数量 II

给你一个 二进制 字符串 s 和一个整数 k。

另给你一个二维整数数组 queries ,其中 queries[i] = [li, ri] 。

如果一个 二进制字符串 满足以下任一条件,则认为该字符串满足 k 约束:

字符串中 0 的数量最多为 k。
字符串中 1 的数量最多为 k。
返回一个整数数组 answer ,其中 answer[i] 表示 s[li…ri] 中满足 k 约束 的
子字符串
的数量。

示例 1:

输入:s = “0001111”, k = 2, queries = [[0,6]]

输出:[26]

解释:

对于查询 [0, 6], s[0…6] = “0001111” 的所有子字符串中,除 s[0…5] = “000111” 和
s[0…6] = “0001111” 外,其余子字符串都满足 k 约束。

示例 2:

输入:s = “010101”, k = 1, queries = [[0,5],[1,4],[2,3]]

输出:[15,9,3]

解释:

s 的所有子字符串中,长度大于 3 的子字符串都不满足 k 约束。

提示:

1 <= s.length <= 105

s[i] 是 ‘0’ 或 ‘1’

1 <= k <= s.length

1 <= queries.length <= 105

queries[i] == [li, ri]

0 <= li <= ri < s.length

所有查询互不相同

题解:
方法:滑动窗口+前缀和+二分查找
        

class Solution {public long[] countKConstraintSubstrings(String S, int k, int[][] queries) {char[] s = S.toCharArray();int n = s.length;int[] left = new int[n];long[] sum = new long[n + 1];int[] cnt = new int[2];int l = 0;for (int i = 0; i < n; i++) {cnt[s[i] & 1]++;while (cnt[0] > k && cnt[1] > k) {cnt[s[l++] & 1]--;}left[i] = l; // 记录合法子串右端点 i 对应的最小左端点 l// 计算 i-left[i]+1 的前缀和sum[i + 1] = sum[i] + i - l + 1;}long[] ans = new long[queries.length];for (int i = 0; i < queries.length; i++) {int ql = queries[i][0];int qr = queries[i][1];// 如果区间内所有数都小于 ql,结果是 j=qr+1int j = lowerBound(left, ql - 1, qr + 1, ql);ans[i] = sum[qr + 1] - sum[j] + (long) (j - ql + 1) * (j - ql) / 2;}return ans;}// 返回在开区间 (left, right) 中的最小的 j,满足 nums[j] >= target// 如果没有这样的数,返回 right// 原理见 https://www.bilibili.com/video/BV1AP41137w7/private int lowerBound(int[] nums, int left, int right, int target) {while (left + 1 < right) { // 区间不为空// 循环不变量:// nums[left] < target// nums[right] >= targetint mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid; // 范围缩小到 (mid, right)} else {right = mid; // 范围缩小到 (left, mid)}}return right;}
}

方法:预处理
        

class Solution {public long[] countKConstraintSubstrings(String S, int k, int[][] queries) {char[] s = S.toCharArray();int n = s.length;int[] left = new int[n];long[] sum = new long[n + 1];int[] cnt = new int[2];int l = 0;for (int i = 0; i < n; i++) {cnt[s[i] & 1]++;while (cnt[0] > k && cnt[1] > k) {cnt[s[l++] & 1]--;}left[i] = l;sum[i + 1] = sum[i] + i - l + 1;}int[] right = new int[n];l = 0;for (int i = 0; i < n; i++) {while (l < n && left[l] < i) {l++;}right[i] = l;}long[] ans = new long[queries.length];for (int i = 0; i < queries.length; i++) {int ql = queries[i][0];int qr = queries[i][1];int j = Math.min(right[ql], qr + 1);ans[i] = sum[qr + 1] - sum[j] + (long) (j - ql + 1) * (j - ql) / 2;}return ans;}
}

14.统计好节点的数目

题目链接:3249. 统计好节点的数目

现有一棵 无向 树,树中包含 n 个节点,按从 0 到 n - 1 标记。树的根节点是节点 0 。给你一个长度为 n - 1 的二维整数数组 edges,其中 edges[i] = [ai, bi] 表示树中节点 ai 与节点 bi 之间存在一条边。

如果一个节点的所有子节点为根的
子树
包含的节点数相同,则认为该节点是一个 好节点。

返回给定树中 好节点 的数量。

子树 指的是一个节点以及它所有后代节点构成的一棵树。

示例 1:

输入:edges = [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]]

输出:7

说明:

在这里插入图片描述

树的所有节点都是好节点。

示例 2:

输入:edges = [[0,1],[1,2],[2,3],[3,4],[0,5],[1,6],[2,7],[3,8]]

输出:6

说明:

在这里插入图片描述

树中有 6 个好节点。上图中已将这些节点着色。

示例 3:

输入:edges =
[[0,1],[1,2],[1,3],[1,4],[0,5],[5,6],[6,7],[7,8],[0,9],[9,10],[9,12],[10,11]]

输出:12

解释:
在这里插入图片描述

除了节点 9 以外其他所有节点都是好节点。

提示:

2 <= n <= 105

edges.length == n - 1

edges[i].length == 2

0 <= ai, bi < n

输入确保 edges 总表示一棵有效的树。

题解:
方法:深度优先搜索
        

class Solution {public int countGoodNodes(int[][] edges) {int n = edges.length + 1;List<Integer>[] g = new ArrayList[n];Arrays.setAll(g, i -> new ArrayList<>());for (int[] e : edges) {int x = e[0];int y = e[1];g[x].add(y);g[y].add(x);}dfs(0, -1, g);return ans;}private int ans;private int dfs(int x, int fa, List<Integer>[] g) {int size = 1;int sz0 = 0;boolean ok = true;for (int y : g[x]) {if (y == fa) {continue; // 不能递归到父节点}int sz = dfs(y, x, g);if (sz0 == 0) {sz0 = sz; // 记录第一个儿子子树的大小} else if (sz != sz0) { // 存在大小不一样的儿子子树ok = false; // 注意不能 break,其他子树 y 仍然要递归}size += sz;}ans += ok ? 1 : 0;return size;}
}

15.最少翻转次数使二进制矩阵回文 I

题目链接:3239. 最少翻转次数使二进制矩阵回文 I

给你一个 m x n 的二进制矩阵 grid 。

如果矩阵中一行或者一列从前往后与从后往前读是一样的,那么我们称这一行或者这一列是 回文 的。

你可以将 grid 中任意格子的值 翻转 ,也就是将格子里的值从 0 变成 1 ,或者从 1 变成 0 。

请你返回 最少 翻转次数,使得矩阵 要么 所有行是 回文的 ,要么所有列是 回文的 。

示例 1:

输入:grid = [[1,0,0],[0,0,0],[0,0,1]]

输出:2

解释:

在这里插入图片描述

将高亮的格子翻转,得到所有行都是回文的。

示例 2:

输入:grid = [[0,1],[0,1],[0,0]]

输出:1

解释:

在这里插入图片描述

将高亮的格子翻转,得到所有列都是回文的。

示例 3:

输入:grid = [[1],[0]]

输出:0

解释:

所有行已经是回文的。

提示:

m == grid.length

n == grid[i].length

1 <= m * n <= 2 * 105

0 <= grid[i][j] <= 1

题解:
方法:回文
        

class Solution {public int minFlips(int[][] grid) {int m = grid.length;int n = grid[0].length;int diffRow = 0;for (int[] row : grid) {for (int j = 0; j < n / 2; j++) {if (row[j] != row[n - 1 - j]) {diffRow++;}}}int diffCol = 0;for (int j = 0; j < n; j++) {for (int i = 0; i < m / 2; i++) {if (grid[i][j] != grid[m - 1 - i][j]) {diffCol++;}}}return Math.min(diffRow, diffCol);}
}

16.最少翻转次数使二进制矩阵回文 II

题目链接:3240. 最少翻转次数使二进制矩阵回文 II

给你一个 m x n 的二进制矩阵 grid 。

如果矩阵中一行或者一列从前往后与从后往前读是一样的,那么我们称这一行或者这一列是 回文 的。

你可以将 grid 中任意格子的值 翻转 ,也就是将格子里的值从 0 变成 1 ,或者从 1 变成 0 。

请你返回 最少 翻转次数,使得矩阵中 所有 行和列都是 回文的 ,且矩阵中 1 的数目可以被 4 整除 。

示例 1:

输入:grid = [[1,0,0],[0,1,0],[0,0,1]]

输出:3

解释:
在这里插入图片描述

示例 2:

输入:grid = [[0,1],[0,1],[0,0]]

输出:2

解释:
在这里插入图片描述

示例 3:

输入:grid = [[1],[1]]

输出:2

解释:

在这里插入图片描述

提示:

m == grid.length

n == grid[i].length

1 <= m * n <= 2 * 105

0 <= grid[i][j] <= 1

题解:
方法:贪心
        

class Solution {public int minFlips(int[][] a) {int m = a.length;int n = a[0].length;int ans = 0;for (int i = 0; i < m / 2; i++) {for (int j = 0; j < n / 2; j++) {int cnt1 = a[i][j] + a[i][n - 1 - j] + a[m - 1 - i][j] + a[m - 1 - i][n - 1 - j];ans += Math.min(cnt1, 4 - cnt1); // 全为 1 或全为 0}}if (m % 2 > 0 && n % 2 > 0) {// 正中间的数必须是 0ans += a[m / 2][n / 2];}int diff = 0;int cnt1 = 0;if (m % 2 > 0) {// 统计正中间这一排for (int j = 0; j < n / 2; j++) {if (a[m / 2][j] != a[m / 2][n - 1 - j]) {diff++;} else {cnt1 += a[m / 2][j] * 2;}}}if (n % 2 > 0) {// 统计正中间这一列for (int i = 0; i < m / 2; i++) {if (a[i][n / 2] != a[m - 1 - i][n / 2]) {diff++;} else {cnt1 += a[i][n / 2] * 2;}}}return ans + (diff > 0 ? diff : cnt1 % 4);}
}

17.适龄的朋友

题目链接:825. 适龄的朋友

在社交媒体网站上有 n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。

如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好友请求:

ages[y] <= 0.5 * ages[x] + 7
ages[y] > ages[x]
ages[y] > 100 && ages[x] < 100
否则,x 将会向 y 发送一条好友请求。

注意,如果 x 向 y 发送一条好友请求,y 不必也向 x 发送一条好友请求。另外,用户不会向自己发送好友请求。

返回在该社交媒体网站上产生的好友请求总数。

示例 1:

输入:ages = [16,16]

输出:2

解释:2 人互发好友请求。

示例 2:

输入:ages = [16,17,18]

输出:2

解释:产生的好友请求为 17 -> 16 ,18 -> 17 。

示例 3:

输入:ages = [20,30,100,110,120]

输出:3

解释:产生的好友请求为 110 -> 100 ,120 -> 110 ,120 -> 100 。

提示:

n == ages.length

1 <= n <= 2 * 104

1 <= ages[i] <= 120

题解:
方法:计数+滑动窗口
        

class Solution {public int numFriendRequests(int[] ages) {int[] cnt = new int[121];for (int age : ages) {cnt[age]++;}int ans = 0;int ageY = 0;int cntWindow = 0;for (int ageX = 0; ageX < cnt.length; ageX++) {cntWindow += cnt[ageX];if (ageY * 2 <= ageX + 14) { // 不能发送好友请求cntWindow -= cnt[ageY];ageY++;}if (cntWindow > 0) { // 存在可以发送好友请求的用户ans += cnt[ageX] * cntWindow - cnt[ageX];}}return ans;}
}

下接:【题解】—— LeetCode一周小结47


相关文章:

【题解】—— LeetCode一周小结46

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结45 11.切棍子的最小成本 题目链接&#xff1a;1547. 切棍子的最…...

Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 在充满活力与激情的校园生活中&#xff0c;校运会不仅是…...

python里的数据结构

列表&#xff08;List&#xff09; 定义和特点&#xff1a; 列表是一种有序的可变序列&#xff0c;可包含不同类型的元素&#xff0c;如整数、字符串、列表等。可以通过索引访问和修改元素&#xff0c;索引从 0 开始。代码示例&#xff1a; my_list [1, 2, apple, [4, 5]] pr…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十一集:制作游戏的金钱系统吉欧Geo和初步制作HUD Canvas的额外内容

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏的金钱系统吉欧Geo以及HUD Camera 1.制作金钱系统吉欧2.制作吉欧的脚本Geo Counter逻辑处理3.制作HUD Canvas的吉欧的UI4.在敌人的HealthManager.c…...

底层逻辑之:极大似然方法(Maximum Likelihood Estimation, MLE)

简介&#xff1a; 极大似然方法&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是一种用于估计统计模型参数的方法。其核心思想是基于观测数据来寻找最可能产生这些数据的模型参数。 早在1821年&#xff0c;德国数学家高斯&#xff08;C. F. Gauss&#xff09;就…...

笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署

远程工具 ToDesk Nginx 解压 tar zxvf nginx-1.20.2.tar.gz进入Nginx 文件夹 cd nginx-1.20.2报错解决 ./configure: error: C compiler cc is not found yum -y install gcc gcc-c autoconf automake make./configure: error: the HTTP rewrite module requires the PC…...

【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…...

深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践

深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践 在并发编程的世界里,Go语言以其独特的并发模型和简洁的语法赢得了广泛的关注。在Go语言的并发控制工具箱中,sync.Mutex和sync.RWMutex是两个至关重要的工具,它们帮助开发者保护共享资源,避免竞态条件,确保…...

15.postgresql--jsonb 数组进行打平,过滤

用jsonb_array_elements函数先展开数组&#xff0c;再用jsonb_each函数遍历元素中的键值对 例如&#xff1a; SELECT * FROM data_table, LATERAL jsonb_array_elements(json_column) WITH ORDINALITY as elem(element, idx) JOIN LATERAL jsonb_each(elem.element) as kv(ke…...

linux下i2c开发与框架源码分析

目录 1 概述 2 I2c子系统框架 3 I2C的使用流程 3.1 在驱动里使用 3.2 在应用层使用 3.3 I2ctool的使用 4 为硬件i2c注册一个适配器 5 i2c子系统源码流程分析 5.1 i2c device与driver绑定过程 5.1.1 Driver的注册与处理 5.1.2 Client device的生成 5.2 I2c的发送与接…...

[ruby on rails] 安装docker

1. docker安装 ubuntu14.04后自带docker安装包&#xff0c;可以直接安装docker.io sudo apt-get updatesudo apt-get install -y docker.io # 安装后启动sudo service docker start最新版本docker 安装docker-ce # 官方源 curl -fsSL https://download.docker.com/linux/ubun…...

I2C学习

详情学习 12. I2C通讯 — [野火]Linux基础与应用开发实战指南——基于LubanCat-RK系列板卡 文档 (embedfire.com) 问题 i2c总线中scl和sda两条线的作用以及区别 在 I2C 总线&#xff08;Inter-Integrated Circuit&#xff09;中&#xff0c;SCL 和 SDA 是两条核心信号线&am…...

VUE:基于MVVN的前端js框架

文章目录 vue框架v-show vue框架 注意是 先写函数名&#xff0c;再写function。 handle:function (){}下面是错误的 function:handle(){}3 v-show 本质上等于号后面还是判断条件&#xff0c;所以不能写赋值语句&#xff0c;下面是正确的 下面是错误的 v-show " ge…...

06、Spring AOP

在我们接下来聊Spring AOP之前我们先了解一下设计模式中的代理模式。 一、代理模式 代理模式是23种设计模式中的一种,它属于结构型设计模式。 对于代理模式的理解: 程序中对象A与对象B无法直接交互,如:有人要找某个公司的老总得先打前台登记传达程序中某个功能需要在原基…...

c语言学习26字符串的应用

字符串在stm32串口中的应用 串口控制流水灯 pc通过串口发送字符串命令控制流水灯 open 流水灯打开 close 流水灯关闭 speed 1~9速度控制 if(strcmp((char *)usart1_rec_buff,"open")0) { led_flag 1; } else if(strcmp((char *)usart1_rec_buff,"close&qu…...

法语旅游常用口语-柯桥学外语到蓝天广场泓畅学校

以下是一些实用的法语旅游常用口语&#xff0c;帮助你在法国旅行时能够进行基本的交流&#xff1a; 问候与道别 Bonjour: 用于日常问候。Au revoir: 用于告别。 请求帮助 S’il vous plat: 用于请求帮助&#xff0c;例如在需要寻找某个地点或服务时。 询问信息 Excusez-moi: 用…...

Kafka 生产者优化与数据处理经验

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

MySQL 主从复制之多线程复制

一、MySQL 多线程复制的背景 MySQL 的主从复制延迟一直是受开发者最为关注的问题之一&#xff0c;MySQL 从 5.6 版本开始追加了并行复制功能&#xff0c;目的就是为了改善复制延迟问题&#xff0c;并行复制称为enhanced multi-threaded slave&#xff08;简称MTS&#xff09;。…...

Linux2.6内核进程调度队列

文章目录 前言运行队列 runqueue优先级活动队列过期队列活跃队列 VS 过期队列active指针和expired指针O(1)调度算法 前言 在前面学习并认识了进程之后&#xff0c;我们会发出一个疑问&#xff1a;Linux内核是如何调度进程的呢&#xff1f; 接下来我们就以Linux2.6内核为例深入探…...

Infineon(英飞凌) TLE985xQX 芯片电机工作电流、电压AD采样

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 单片机芯片合集 文章目录 其他系列文章导航 文章目录 前言 一、选取合适的端口 1.通过 OP1、OP2 电流采集运放输入端口进行H桥驱动的电流采集。 2.通过 O_D_VBAT_AD_EN、I_A_VBAT_A…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...