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

【算法】滑动窗口题单——2.不定长滑动窗口(求最长/最大)

文章目录

  • 3. 无重复字符的最长子串
  • 1493. 删掉一个元素以后全为 1 的最长子数组
  • 904. 水果成篮
  • 1695. 删除子数组的最大得分
  • 2841. 几乎唯一子数组的最大和
  • 2024. 考试的最大困扰度
  • 1004. 最大连续1的个数 III
  • 1438. 绝对差不超过限制的最长连续子数组
  • 2401. 最长优雅子数组
    • 解法1——维护窗口内int各位出现的次数
    • 解法2——利用位运算的性质 维护窗口🐂
  • 1658. 将 x 减到 0 的最小操作数
  • 1838. 最高频元素的频数
  • 2831. 找出最长等值子数组
    • 解法1——双哈希表:频次哈希表 和 频次的频次哈希表
    • 解法2——分组 + 双指针 🐂
  • 2106. 摘水果
  • 1610. 可见点的最大数目⭐(坐标转换成极角)
  • 159. 至多包含两个不同字符的最长子串
  • 340. 至多包含 K 个不同字符的最长子串

题单来源: https://leetcode.cn/problems/minimum-size-subarray-in-infinite-array/solutions/2464878/hua-dong-chuang-kou-on-shi-jian-o1-kong-cqawc/

3. 无重复字符的最长子串

https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/

在这里插入图片描述
提示:
0 <= s.length <= 5 * 10^4
s 由英文字母、数字、符号和空格组成

枚举右端点,根据窗口内计数情况移动左端点。

class Solution {public int lengthOfLongestSubstring(String s) {int ans = 0;int[] cnt = new int[128];for (int l = 0, r = 0; r < s.length(); ++r) {char ch = s.charAt(r);cnt[ch]++;while (cnt[ch] > 1) cnt[s.charAt(l++)]--;ans = Math.max(r - l + 1, ans);}return ans;}
}

1493. 删掉一个元素以后全为 1 的最长子数组

https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/description/

在这里插入图片描述
提示:

1 <= nums.length <= 10^5
nums[i] 要么是 0 要么是 1 。

窗口内最多有 1 个0,用 id 记录上一个出现 0 的位置,当出现新的 0 时,将左端点设置为 l = id + 1。 这样就保持了窗口内始终最多有 1 个 0。

class Solution {public int longestSubarray(int[] nums) {int n = nums.length, ans = 0;for (int l = 0, r = 0, id = -1; r < n; ++r) {if (nums[r] == 0) {l = id + 1;id = r;}ans = Math.max(r - l, ans);}return ans;}
}

904. 水果成篮

https://leetcode.cn/problems/fruit-into-baskets/description/
在这里插入图片描述
提示:

1 <= fruits.length <= 10^5
0 <= fruits[i] < fruits.length

class Solution {public int totalFruit(int[] fruits) {Map<Integer, Integer> m = new HashMap<>();int ans = 0;for (int l = 0, r = 0; r < fruits.length; ++r) {m.merge(fruits[r], 1, Integer::sum);while (m.size() > 2) {m.merge(fruits[l], -1, Integer::sum);if (m.get(fruits[l]) == 0) m.remove(fruits[l]);l++;}ans = Math.max(ans, r - l + 1);}return ans;}
}

1695. 删除子数组的最大得分

https://leetcode.cn/problems/maximum-erasure-value/description/

在这里插入图片描述

提示:

1 <= nums.length <= 10^5
1 <= nums[i] <= 10^4

class Solution {public int maximumUniqueSubarray(int[] nums) {int n = nums.length, ans = 0, s = 0;int[] cnt = new int[10001];for (int l = 0, r = 0; r < n; ++r) {s += nums[r];cnt[nums[r]]++;while (cnt[nums[r]] > 1) {s -= nums[l];cnt[nums[l++]]--;}if (s > ans) ans = s;}return ans;}
}

s > ans 判断会比使用 s = Math.max(ans, s) 快一些。

2841. 几乎唯一子数组的最大和

https://leetcode.cn/problems/maximum-sum-of-almost-unique-subarray/description/

在这里插入图片描述

提示:

1 <= nums.length <= 2 * 10^4
1 <= m <= k <= nums.length
1 <= nums[i] <= 10^9

class Solution {public long maxSum(List<Integer> nums, int m, int k) {long ans = 0, n = nums.size(), s = 0;Map<Integer, Integer> cnt = new HashMap<>();for (int i = 0; i < k - 1; ++i) {s += nums.get(i);cnt.merge(nums.get(i), 1, Integer::sum);}for (int l = 0, r = k - 1; r < n; ++l, ++r) {s += nums.get(r);cnt.merge(nums.get(r), 1, Integer::sum);if (cnt.size() >= m) ans = Math.max(ans, s);s -= nums.get(l);cnt.merge(nums.get(l), -1, Integer::sum);if (cnt.get(nums.get(l)) == 0) cnt.remove(nums.get(l));}return ans;}
}

2024. 考试的最大困扰度

https://leetcode.cn/problems/maximize-the-confusion-of-an-exam/description/

在这里插入图片描述

提示:
n == answerKey.length
1 <= n <= 5 * 10^4
answerKey[i] 要么是 'T' ,要么是 'F'
1 <= k <= n

维护一个滑动窗口,枚举右端点,当窗口中T和F的较小数量大于k时,将左端点向右移。
在这个过程中用窗口长度更新答案。

class Solution {public int maxConsecutiveAnswers(String answerKey, int k) {int n = answerKey.length(), ans = 0;int t = 0, f = 0;for (int l = 0, r = 0; r < n; ++r) {char a = answerKey.charAt(r);if (a == 'T') t++;else f++;// 将左端点向右移while (t > k && f > k) {a = answerKey.charAt(l++);if (a == 'T') t--;else f--;}ans = Math.max(r - l + 1, ans);}return ans;}
}

1004. 最大连续1的个数 III

https://leetcode.cn/problems/max-consecutive-ones-iii/description/

在这里插入图片描述

提示:

1 <= nums.length <= 10^5
nums[i] 不是 0 就是 1
0 <= k <= nums.length

维护一个窗口中最多出现 k 个 0 的滑动窗口。

class Solution {public int longestOnes(int[] nums, int k) {int n = nums.length, c0 = 0, ans = 0;for (int l = 0, r = 0; r < n; ++r) {if (nums[r] == 0) c0++;while (c0 > k) {if (nums[l++] == 0) c0--;}ans = Math.max(r - l + 1, ans);}return ans;}
}

1438. 绝对差不超过限制的最长连续子数组

https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/description/

在这里插入图片描述

提示:

1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9
0 <= limit <= 10^9

同时维护窗口内的最大值和最小值。
可以使用 TreeMap 或者 单调队列来做。

class Solution {public int longestSubarray(int[] nums, int limit) {TreeMap<Integer, Integer> tm = new TreeMap<>();int ans = 0;for (int l = 0, r = 0; r < nums.length; ++r) {tm.merge(nums[r], 1, Integer::sum);while (tm.lastKey() - tm.firstKey() > limit) {tm.merge(nums[l], -1, Integer::sum);if (tm.get(nums[l]) == 0) tm.remove(nums[l]);l++;}ans = Math.max(r - l + 1, ans);}return ans;}
}

2401. 最长优雅子数组

https://leetcode.cn/problems/longest-nice-subarray/description/

在这里插入图片描述

提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9

解法1——维护窗口内int各位出现的次数

题目要求即为int的32位中,每一位都最多出现一次。

class Solution {public int longestNiceSubarray(int[] nums) {int n = nums.length, ans = 0;int[] cnt = new int[32];for (int l = 0, r = 0; r < n; ++r) {op(cnt, nums[r], 1);while (!check(cnt)) op(cnt, nums[l++], -1);ans = Math.max(ans, r - l + 1);}return ans;}public void op(int[] cnt, int x, int m) {for (int i = 0; i < cnt.length; ++i) {if ((x >> i & 1) == 1) cnt[i] += m;}}public boolean check(int[] cnt) {for (int c: cnt) {if (c > 1) return false;}return true;}
}

解法2——利用位运算的性质 维护窗口🐂

充分 利用了 & ^ | 三种运算的性质。

使用 & 判断是否有交集。
使用 ^ 模拟去除。
使用 | 模拟加入。

class Solution {public int longestNiceSubarray(int[] nums) {int ans = 0;for (int left = 0, right = 0, or = 0; right < nums.length; right++) {// 有交集while ((or & nums[right]) > 0) {or ^= nums[left++]; // 从 or 中去掉集合 nums[left]}or |= nums[right];      // 把集合 nums[right] 并入 or 中ans = Math.max(ans, right - left + 1);}return ans;}
}

1658. 将 x 减到 0 的最小操作数

https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description/

在这里插入图片描述

提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^4
1 <= x <= 10^9

等价于找到窗口内和为 sum - x 的最长子数组的长度。

class Solution {public int minOperations(int[] nums, int x) {// 等价于找到窗口内和为 sum - x 的最长子数组的长度。int n = nums.length, t = Arrays.stream(nums).sum() - x, ans = -1, s = 0;for (int l = 0, r = 0; r < n; ++r) {s += nums[r];while (l <= r && s > t) s -= nums[l++];if (s == t) ans = Math.max(ans, r - l + 1); }return ans != -1? n - ans: -1;}
}

1838. 最高频元素的频数

https://leetcode.cn/problems/frequency-of-the-most-frequent-element/description/

在这里插入图片描述

提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^5
1 <= k <= 10^5

排序 + 滑动窗口。
每个窗口都假设变成最大的那个数字,不能变的移出窗口。

class Solution {public int maxFrequency(int[] nums, int k) {Arrays.sort(nums);int n = nums.length, ans = 1;long s = 0;for (int l = 0, r = 0; r < n; ++r) {s += nums[r];while ((long)(r - l + 1) * nums[r] - k > s) s -= nums[l++];if ((long)(r - l + 1) * nums[r] - k <= s) ans = Math.max(ans, r - l + 1);}return ans;}
}

2831. 找出最长等值子数组

https://leetcode.cn/problems/find-the-longest-equal-subarray/description/

在这里插入图片描述

提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= nums.length
0 <= k <= nums.length

解法1——双哈希表:频次哈希表 和 频次的频次哈希表

频次的频次哈希表 用于 快速找到最大的频次。

class Solution {public int longestEqualSubarray(List<Integer> nums, int k) {int n = nums.size(), ans = 0;Map<Integer, Integer> cnt = new HashMap<>();// 频次 哈希表 ,用于快速找到最大的频次TreeMap<Integer, Integer> pCnt = new TreeMap<>();for (int l = 0, r = 0; r < n; ++r) {cnt.merge(nums.get(r), 1, Integer::sum);pCnt.merge(cnt.get(nums.get(r)), 1, Integer::sum);pCnt.merge(cnt.get(nums.get(r)) - 1, -1, Integer::sum);while (r - l + 1 - pCnt.lastKey() > k) {cnt.merge(nums.get(l), -1, Integer::sum);pCnt.merge(cnt.get(nums.get(l)), 1, Integer::sum);pCnt.merge(cnt.get(nums.get(l)) + 1, -1, Integer::sum);if (pCnt.get(cnt.get(nums.get(l)) + 1) == 0) pCnt.remove(cnt.get(nums.get(l)) + 1);l++;}ans = Math.max(pCnt.lastKey(), ans);}return ans;}
}

解法2——分组 + 双指针 🐂

https://leetcode.cn/problems/find-the-longest-equal-subarray/solutions/2396401/fen-zu-shuang-zhi-zhen-pythonjavacgo-by-lqqau/

算法思路见下图。
在这里插入图片描述

class Solution {public int longestEqualSubarray(List<Integer> nums, int k) {int n = nums.size(), ans = 0;Map<Integer, List<Integer>> m = new HashMap<>();for (int i = 0; i < n; ++i) {if (!m.containsKey(nums.get(i))) {m.put(nums.get(i), new ArrayList<>());}List<Integer> ls = m.get(nums.get(i));ls.add(i - ls.size());}for (List<Integer> ls: m.values()) {int res = 0;for (int l = 0, r = 0; r < ls.size(); ++r) {while (ls.get(r) - ls.get(l) > k) l++;res = Math.max(res, r - l + 1);}ans = Math.max(ans, res);}return ans;}
}

2106. 摘水果

https://leetcode.cn/problems/maximum-fruits-harvested-after-at-most-k-steps/description/

在这里插入图片描述

在这里插入图片描述

维护一个窗口,窗口中是可以被采集的水果。
随着右端点的枚举,左端点也会随着窗口的扩大导致不合理,从而将左端点右移。

class Solution {public int maxTotalFruits(int[][] fruits, int startPos, int k) {int ans = 0, s = 0;for (int l = 0, r = 0; r < fruits.length; ++r) {s += fruits[r][1];while (l <= r && !check(fruits[l][0], fruits[r][0], startPos, k)) s-= fruits[l++][1];ans = Math.max(ans, s);}return ans;}// 检查窗口是否合理public boolean check(int a, int b, int x, int k) {if (a <= x && b <= x) return x - a <= k;    // 都在左边if (a >= x && b >= x) return b - x <= k;    // 都在右边// a在左边,b在右边a = x - a;b = b - x;return Math.min(a, b) * 2 + Math.max(a, b) <= k;}
}

1610. 可见点的最大数目⭐(坐标转换成极角)

https://leetcode.cn/problems/maximum-number-of-visible-points/description/

在这里插入图片描述

在这里插入图片描述

提示:
1 <= points.length <= 10^5
points[i].length == 2
location.length == 2
0 <= angle < 360
0 <= posx, posy, xi, yi <= 100

坐标转成极角的方法为 Math.atan2(),见:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html#atan2(double,double)

将极角存入列表之后,再重复加入 + 2pi 的元素,这是为了计算完全。
最后使用滑动窗口计算。

class Solution {public int visiblePoints(List<List<Integer>> points, int angle, List<Integer> location) {int sameCnt = 0;List<Double> polarDegrees = new ArrayList<>();int x0 = location.get(0), y0 = location.get(1);for (int i = 0; i < points.size(); ++i) {int x = points.get(i).get(0), y = points.get(i).get(1);if (x == x0 && y == y0) {sameCnt++;continue;}Double degree = Math.atan2(y - y0, x - x0);polarDegrees.add(degree);}Collections.sort(polarDegrees);int m = polarDegrees.size();for (int i = 0; i < m; ++i) {polarDegrees.add(polarDegrees.get(i) + 2 * Math.PI);}int maxCnt = 0;double toDegree = angle * Math.PI / 180;for (int l = 0, r = 0; l < m; ++l) {Double curr = polarDegrees.get(l) + toDegree;while (r < polarDegrees.size() && polarDegrees.get(r) <= curr) {r++;}maxCnt = Math.max(maxCnt, r - l);}return maxCnt + sameCnt;}
}   

159. 至多包含两个不同字符的最长子串

https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/description/

在这里插入图片描述

维护各个字符的出现次数,当哈希表中字符种类大于 2 的时候将左端点右移。

class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {int n = s.length(), ans = 0;Map<Character, Integer> cnt = new HashMap<>();for (int l = 0, r = 0; r < n; ++r) {cnt.merge(s.charAt(r), 1, Integer::sum);while (cnt.size() > 2) {cnt.merge(s.charAt(l), -1, Integer::sum);if (cnt.get(s.charAt(l)) == 0) cnt.remove(s.charAt(l));l++;}ans = Math.max(ans, r - l + 1);}return ans;}
}

340. 至多包含 K 个不同字符的最长子串

https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/description/

在这里插入图片描述

把上一题的 2 换成 k 就好了。

class Solution {public int lengthOfLongestSubstringKDistinct(String s, int k) {int n = s.length(), ans = 0;Map<Character, Integer> cnt = new HashMap<>();for (int l = 0, r = 0; r < n; ++r) {cnt.merge(s.charAt(r), 1, Integer::sum);while (cnt.size() > k) {cnt.merge(s.charAt(l), -1, Integer::sum);if (cnt.get(s.charAt(l)) == 0) cnt.remove(s.charAt(l));l++;}ans = Math.max(ans, r - l + 1);}return ans;}
}

相关文章:

【算法】滑动窗口题单——2.不定长滑动窗口(求最长/最大)

文章目录 3. 无重复字符的最长子串1493. 删掉一个元素以后全为 1 的最长子数组904. 水果成篮1695. 删除子数组的最大得分2841. 几乎唯一子数组的最大和2024. 考试的最大困扰度1004. 最大连续1的个数 III1438. 绝对差不超过限制的最长连续子数组2401. 最长优雅子数组解法1——维…...

电子学会C/C++编程等级考试2022年03月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

Libvirt-Qemu-Kvm 操作手记

(持续更新~) 本文主要用于记录在操作libvirt qemu kvm过程中遇到的问题及原因分析。 Hugepage 让qemu使用大页可以减少tdp的size&#xff0c;一定程度上可以提高性能&#xff1b;使用大页可以用memfd或者file backend。 memfd 操作步骤如下&#xff1a; 在系统中reserv…...

代码随想录算法训练营第二十八天| 78 子集 90 子集|| 93 复原IP地址

78 子集 由题意可知数组中的元素互不相同&#xff0c;所以在dfs中我们可以将当前的path直接加入到res中。 class Solution {List<List<Integer>>res new ArrayList<>();List<Integer>path new LinkedList<>();public List<List<Integer…...

9 HDFS架构剖析

问题 100台服务器&#xff0c;存储空间单个200GB 20T 5T文件如何存储&#xff1f; 128MB一块 128MB81GB 1288*10241TB 5T数据分成的128MB的块数 8192 * 5 客户端(client)代表用户通过与namenode和datanode交互来访问整个文件系统。 HDFS集群有两类节点&#xff1a; 一个na…...

Python中的迭代器、生成器和装饰器

当谈到Python中的迭代器、生成器和装饰器时&#xff0c;这三个概念都是与函数和数据处理密切相关的。让我们逐个深入了解它们。 1. 迭代器&#xff08;Iterators&#xff09;&#xff1a; 迭代器是一个可以逐个访问元素的对象。在Python中&#xff0c;迭代器实现了两个方法&a…...

【NGINX--1】基础知识

1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

小米路由器AX1800降级后的SSH登录和关墙等命令

​​​​​​​​​​​​​​​​​​​​​http://192.168.31.1/cgi-bin/luci/;stok429aaa9c7f05ee7d0816a00257b8414a/api/misystem/set_config_iotdev?bssidXiaomi&user_idlongdike&ssid-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20s%…...

5-什么是猴子补丁,有什么用途?什么是反射,python中如何使用反射?http和https的区别?

1 什么是猴子补丁&#xff0c;有什么用途 **解释**1 Python猴子补丁&#xff08;Monkey Patch&#xff09;是一种在运行时动态修改代码的技术。通在不修改源代码的情况下&#xff0c;改变代码的执行方式或增加功能2 Monkey Patching是在 运行时(run time) 动态替换属性(attrib…...

深信服AC应用控制技术

拓扑图 目录 拓扑图 一.上班时间不允许使用qq(假设上班时间是上午9到12&#xff0c;下午14到18) 1.新增上班时间不允许使用qq访问权限策略 2.将策略应用到组&#xff0c;例如修仙部 3.验证 上班时间发现登录不了 下班时间可以登录 二.上班时间不允许访问视频网站(假设上班时…...

全新云开发工具箱:融合多项功能的微信小程序源码解决方案

全新云开发工具箱&#xff1a;融合多项功能的微信小程序源码解决方案 这款微信小程序源码提供了超过40个功能&#xff0c;集合了各种实用工具&#xff0c;成为一款全能工具箱。这些功能包括证件照制作、垃圾分类查询、个性签名制作、二维码生成、文字九宫格、手持弹幕、照片压…...

Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用

文章目录 Android跨进程通信&#xff0c;IPC&#xff0c;RPC&#xff0c;Binder系统&#xff0c;C语言应用层调用&#xff08;&#xff09;1.概念2.流程3.bctest.c3.1 注册服务&#xff0c;打开binder驱动3.2 获取服务 4.binder_call Android跨进程通信&#xff0c;IPC&#xf…...

数据结构【DS】栈

共享栈 共享栈的目的是什么&#xff1f; 目的:有效利用存储空间。 共享栈的存取数据时间复杂度为&#xff1f; 存取数据时间复杂度为O(1) 共享栈如何判空&#xff1f;如何判满&#xff1f; 两个栈的栈顶指针都指向栈顶元素&#xff0c;&#x1d461;&#x1d45c;&#x1d45d;…...

提高视频性能的 5 种方法

摆脱共享托管计划 如果您的网站每月收到数千名访问者&#xff0c;那么现在是时候放弃许多企业家和小型企业开始使用的共享托管计划了。在启动网站时选择廉价的托管计划是可以理解的&#xff0c;因为此类计划通常足以使用一年或更长时间&#xff0c;而不会影响性能。 在共享托…...

python有哪些高级的技术

Python作为一种功能强大且灵活的编程语言&#xff0c;具有许多高级技术和功能。以下是一些Python中常见的高级技术&#xff1a; 函数式编程&#xff1a;Python支持函数式编程范式&#xff0c;包括高阶函数、匿名函数&#xff08;lambda函数&#xff09;、闭包、以及针对序列的函…...

系列五、怎么查看默认的垃圾收集器是哪个?

一、怎么查看默认的垃圾收集器是哪个 java -XX:PrintCommandLineFlags -version...

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制AI助手——PPT大纲助手

随着人工智能技术的不断发展,AI助手在各行各业中扮演着越来越重要的角色。在商业领域,PPT演示是一种常见的沟通方式,而定制化的PPT大纲助手能够极大地提高PPT制作效率和质量。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和私有知识库,构建一款高效的PPT大纲助手…...

浅谈基于云计算的环境智能监控系统

随着经济的飞速发展&#xff0c;环境污染也越来越严重&#xff0c;环境监控成为了政府与社会关注的焦点。本文提出了一种基于云计算的环境智能监控系统——EasyCVR&#xff0c;该系统综合应用了传感器、云计算、大数据、人工智能等技术&#xff0c;具有实时、准确、高效的监控能…...

向量机SVM代码实现

支持向量机&#xff08;SVM, Support Vector Machines&#xff09;是一种广泛应用于分类、回归、甚至是异常检测的监督学习算法。自从Vapnik和Chervonenkis在1995年首次提出&#xff0c;SVM算法就在机器学习领域赢得了巨大的声誉。这部分因为其基于几何和统计理论的坚实数学基础…...

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍模数芯片ADC0809介绍通过模数芯片ADC0809把电压模…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

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

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

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...