java数据结构刷题练习
class Solution {public boolean containsDuplicate(int[] nums) {Arrays.sort(nums);for(int i=1;i<nums.length;i++){if(nums[i-1]==nums[i])return true;}return false;
}
}作者:affectionate-albattani7tn
链接:https://leetcode.cn/problems/contains-duplicate/solution/pai-xu-xun-huan-by-affectionate-albattan-bvdp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1]
输出:1
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-subarray
著作权归领扣网
class Solution {public int maxSubArray(int[] nums) {int ans = nums[0];int sum = 0;for(int num: nums) {if(sum > 0) {sum += num;} else {sum = num;}ans = Math.max(ans, sum);}return ans;}
}作者:guanpengchn
链接:https://leetcode.cn/problems/maximum-subarray/solution/hua-jie-suan-fa-53-zui-da-zi-xu-he-by-guanpengchn/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
络所有。商业转载
class Solution {(优化见下面)public int maxSubArray(int[] nums) {int ans = nums[0]; // 记录当前最大子序和int cur = nums[0]; // 记录当前连续子序列的和for (int i = 1; i < nums.length; i++) {if (nums[i] <= 0 && cur <= 0)cur = nums[i]; // 如果当前元素小于等于 0,且前面的连续子序列的和也小于等于 0,则以当前元素更新连续子序列的起点else if (nums[i] <= 0)cur = cur + nums[i]; // 如果当前元素小于等于 0,但前面的连续子序列的和大于 0,则将当前元素加入连续子序列中,因为加入后整体变大else if (nums[i] >= 0 && cur <= 0)cur = nums[i]; // 如果当前元素大于 0,且前面的连续子序列的和小于等于 0,则以当前元素更新连续子序列的起点else if (nums[i] >= 0 )cur = nums[i] + cur; // 如果当前元素大于 0,且前面的连续子序列的和也大于 0,则将当前元素加入连续子序列中,加入后更大ans = Math.max(cur,ans); // 更新当前最大子序和}return ans; // 返回当前最大子序和}
}作者:eyi-gu-bi-gu-e
链接:https://leetcode.cn/problems/maximum-subarray/solution/yi-yan-kan-dong-you-qian-ru-shen-by-eyi-sr9nn/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
请联系官方授权,非商业转载请注明出处。
题目3
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public class Solution {public int[] twoSum(int[] nums, int target) {int key;for (int i = 1; i < nums.length; ++i) {key = target - nums[i];//求出值for (int j = 0; j < i; ++j) {//在之前数组中找是否有该值,如果有就找到这二个数if (nums[j] == key) return new int[]{i, j};}}return null;}
}作者:jiang-cu-san-wen-yu
链接:https://leetcode.cn/problems/two-sum/solution/liang-shu-zhi-he-bao-li-mei-ju-ha-xi-bia-vtce/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法二
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; ++i) {if (map.containsKey(target - nums[i])) {return new int[]{map.get(target - nums[i]), i};}map.put(nums[i], i);}return null;}
}作者:jiang-cu-san-wen-yu
链接:https://leetcode.cn/problems/two-sum/solution/liang-shu-zhi-he-bao-li-mei-ju-ha-xi-bia-vtce/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目四
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
示例 1:
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
示例 2:
输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。
示例 3:
输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public void merge(int[] nums1, int m, int[] nums2, int n) {/* 双指针利用nums1和nums2已经升序排列的,每次从两个数组第一个元素取出较小的放入结果数组时间复杂度O(m+n),指针需要移动m+n次,空间复杂度O(m+n),需要建立一个新数组存储,最后再把结果赋值到nums1 */int p1 = 0;int p2 = 0;int[] sorted = new int[m+n];int cur;while (p1 < m || p2 < n) {if (p1 == m) {// 如果p1已经走完,后续的cur都是nums2的元素cur = nums2[p2++];} else if (p2 == n) {// 如果p2已经走完,后续的cur都是nums1的元素cur = nums1[p1++];} else if (nums1[p1] < nums2[p2]) {// 如果p1 p2都没走完,cur为两者较小的值cur = nums1[p1++];} else {// 如果p1 p2都没走完,cur为两者较小的值cur = nums2[p2++];}// 将cur赋值给排序结果值对应的下标元素,注意这里的-1和上面的p1++ p2++sorted[p1 + p2 - 1] = cur;}// 额外的空间重新赋值给nums1for (int i = 0; i < m + n; i++) {nums1[i] = sorted[i];}
}作者:s1amduncan
链接:https://leetcode.cn/problems/merge-sorted-array/solution/he-bing-liang-ge-you-xu-shu-zu-by-s1amdu-xfeq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法二
public void merge(int[] nums1, int m, int[] nums2, int n) {// 逆向双指针,上述双指针之所以用临时变量,是因为如果直接合并到nums1中,从前往后,// 但是实际nums1后半部分是空的0占位,// 直接覆盖不会影响结果,因此指针可以设置从后往前遍历,每次取两则较大值放入nums1的后面,// 时间复杂度O(m+n),指针移动单调递减最多移动m+n次,空间复杂度O(1),直接对nums1原址修改,不需要额外的空间int p1 = m - 1; // nums1的指针起始位置int p2 = n - 1; // nums2的指针起始位置int tail = m + n - 1; // 合并后的nums1的指针起始位置int cur; // 当前指针需要赋值的元素// 如果p1或p2没有往前走到头,则不断循环while (p1 >= 0 || p2 >= 0) {if (p1 == -1) {// 如果nums1的指针走到头,即nums1的元素都已经取出cur = nums2[p2--];} else if (p2 == -1) {// 如果nums2的指针走到头,即nums2的元素都已经取出cur = nums1[p1--];} else if (nums1[p1] > nums2[p2]) {// nums1和nums2都没取完,选择两个较大的加入到tailcur = nums1[p1--];} else {// nums1和nums2都没取完,选择两个较大的加入到tailcur = nums2[p2--];}// 将当前cur值赋值给tail后,tail往前移动一位nums1[tail--] = cur;}
}作者:s1amduncan
链接:https://leetcode.cn/problems/merge-sorted-array/solution/he-bing-liang-ge-you-xu-shu-zu-by-s1amdu-xfeq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目5
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/intersection-of-two-arrays-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);int i=0,j=0,k=0;int[] temp = new int[nums1.length];while(i<nums1.length && j<nums2.length){if(nums1[i]==nums2[j]){temp[k++] = nums1[i];i++;j++;}else if(nums1[i]<nums2[j]){i++;}else{j++;}}int[] result = new int[k];for(int m=0; m<k; m++){result[m] = temp[m];}return result;}
}作者:charming-shternrsa
链接:https://leetcode.cn/problems/intersection-of-two-arrays-ii/solution/350liang-ge-shu-zu-de-jiao-ji-ii-by-char-hhg4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法二
class Solution {public int[] intersect(int[] nums1, int[] nums2) {// 数组法int[] cnt = new int[1005];List<Integer> ansList = new ArrayList<>();for (int n : nums1) {cnt[n]++;}for (int n : nums2) {if (cnt[n] > 0) {ansList.add(n);cnt[n]--;}}int[] ans = new int[ ansList.size()];for (int i = 0; i < ansList.size(); i++) {ans[i] = ansList.get(i);}return ans;}
}作者:JSJohnsonJS
链接:https://leetcode.cn/problems/intersection-of-two-arrays-ii/solution/gen-ju-xian-zhi-tiao-jian-ding-yi-shu-zu-8hf8/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目6
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
示例 1:
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2:
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock
著作权归
public int maxProfit(int[] prices) {// 在第j天卖出,维护一个第1天到j-1天里面的最小值作为买入// 然后每能够卖出的一天用当天价格-前面买入最小值作为利润,一直扫描下直到结束我们获取最大的利润值int minPrice = prices[0]; // 初始化最小的买入为第一天的价格int maxProfit = 0;// 一遍扫描,扫描里面同步判断更新当前最小买入和最大利润,从1开始即可,因为0的哪天已经赋值给minPrice初始值了for (int i = 1; i < prices.length; i++) {// 如果当前价格比minPrice还要小,那么就调整最小买入值为当前价格if (prices[i] < minPrice) {minPrice = prices[i];// 否则计算当前卖出的话是否比最大利润打,如果大则更新最大利润} else if (prices[i] - minPrice > maxProfit) {maxProfit = prices[i] - minPrice;}}return maxProfit;
}作者:s1amduncan
链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/solution/mai-mai-gu-piao-de-zui-jia-shi-ji-by-s1a-q95w/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法二class Solution {public int maxProfit(int[] prices) {int buy = 0;int max = 0;//走到购买不会亏的那一天,也就是下一个数字比当前数字大的那一天while(buy < prices.length - 1 && prices[buy + 1] < prices[buy]){buy++;}//若走到头,说明序列非递增,比可能赚钱。if(buy == prices.length - 1){return max;}//直接从能赚钱的后一天开始遍历for(int sell = buy + 1; sell < prices.length; sell++){//如果走到了一个更加小的买入点,直接保存该买入点if(prices[sell] - prices[buy] <= 0){buy = sell;continue;}//否则计算当前买入点和卖出点的差价max = Math.max(max,prices[sell] - prices[buy]);}return max;}
}作者:hydogdog
链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/solution/jian-dan-yi-dong-de-shuang-zhi-zhen-by-h-qfkp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
相关文章:
java数据结构刷题练习
class Solution {public boolean containsDuplicate(int[] nums) {Arrays.sort(nums);for(int i1;i<nums.length;i){if(nums[i-1]nums[i])return true;}return false; } }作者:affectionate-albattani7tn 链接:https://leetcode.cn/problems/contains…...

《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议
密码协议是指两个或者两个以上参与者使用密码算法时,为了达到加密保护或安全认证目的而约定的交互规则。 密钥交换协议 公钥密码出现之前,密钥交换很不方便,公钥密码可以在不安全信道上进行交换,交换的密码协议是为了协商会话密钥…...

Qt Quick - TabBar
Qt Quick - TabBar使用总结 一、概述二、调整选项卡三、Flickable标签三、定制化 一、概述 TabBar其实就是选项卡,TabBar是由TabButton控件填充,TabBar可以与任何提供currentIndex属性的布局或容器控件一起使用,如StackLayout或SwipeView。T…...
ElasticSearch集群搭建
一、ElasticSearch 集群 1.1 搭建集群 Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群,三个Master节点最多只能故障一台Master节点,如果故障两个Master节点,Elasticsearch将无法组成集群.会报错&…...

【pan-sharpening 攻击:目标检测】
Adversarial pan-sharpening attacks for object detection in remote sensing (对抗性泛锐化攻击在遥感目标检测中的应用) 全色锐化是遥感系统中最常用的技术之一,其目的是将纹理丰富的PAN图像和多光谱MS图像融合,以获得纹理丰…...

nginx反向代理_负载均衡的配置
说明 两台虚拟机: 88节点是自己的虚拟机 66节点是小组成员的虚拟机,我们暂且叫同学机 tomcat端口,分别为8081和8082 总结就是: 自己虚拟机上面安装nginx和tomcat8082 同学机上安装tomcat8081 一、开始安装nginx(只安装…...

程序员随时担心被抛弃......大厂外包值不值得去?
外包”这个词经常被人提及,而且也经常被我们所“鄙夷”,很多人都在四处问:“软件外包公司到底能不能去”? 外包公司到底能不能学到真正的技术? 外包大厂能不能去? 今天就给大家详细分享下外包的利与弊 做…...
C++解释器模式实战:从设计到应用的全面指南
目录标题 第一章:解释器模式简介(Introduction to the Interpreter Pattern)1.1 模式定义(Pattern Definition)1.2 解释器模式的用途(Uses of the Interpreter Pattern) 1.3 解释器模式的优缺点…...

使用华为云免费资源训练Paddle UIE模型
一、创建虚拟环境 好习惯,首先创建单独的运行环境 conda create -n uie python3.10.9 conda activate uie 二、安装paddle框架及paddlenlp 2.1 参考官方文档安装paddle 开始使用_飞桨-源于产业实践的开源深度学习平台 首先查看自己服务器cuda版本,…...

深度学习12. CNN经典网络 VGG16
深度学习12. CNN经典网络 VGG16 一、简介1. VGG 来源2. VGG分类3. 不同模型的参数数量4. 3x3卷积核的好处5. 关于学习率调度6. 批归一化 二、VGG16层分析1. 层划分2. 参数展开过程图解3. 参数传递示例4. VGG 16各层参数数量 三、代码分析1. VGG16模型定义2. 训练3. 测试 一、简…...

Doris(3):创建用户与创建数据库并赋予权限
Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。 1 创建用户 Root 用户登录与密码修改 Doris 内置 r…...

深入浅出 Golang 内存管理
了解内存管理~ 前言: 本节课主要介绍了内存管理知识与自动内存管理机制,并对目前 Go 内存管理过程中存在的问题提出了解决方案,同时结合了上次课程学习的《Go 语言性能优化》相关知识,提供可行性的优化建议 … 自动内存管理 Go…...

基于Python的简单40例和爬虫详细讲解(文末赠书)
目录 先来看看Python40例 学习Python容易坐牢? 介绍一下什么是爬虫 1、收集数据 2、爬虫调研 3、刷流量和秒杀 二、爬虫是如何工作的? 三、爬虫与SEO优化 什么是python爬虫 Python爬虫架构 最担心的问题 本期送书 随着人工智能以及大数据的兴起…...

Vector - CAPL - CAN x 总线信息获取(续2)
继续.... 目录 ErrorFrameCount -- 错误帧数量 代码示例 ErrorFrameRate -- 错误帧速率 代码示例 ExtendedFrameCount -- 扩展帧数量 代码示例 ExtendedFrameRate -- 扩展帧速率 代码示例 ExtendedRemoteFrameCount -- 远程扩展帧数量 代码示例 ExtendedRemoteFrameRa…...
C++基础知识【8】模板
目录 一、什么是C模板? 二、函数模板 三、类模板 四、模板特化 五、模板参数 六、可变模板参数 七、模板元编程 八、嵌套模板 九、注意事项 一、什么是C模板? C模板是C编程中非常重要的一部分,它允许程序员以一种通用的方式编写代码…...

MAC-安装Java环境、JDK配置、IDEA插件推荐
背景:发现经常换电脑装环境等比较麻烦,主要还是想记录一下,不要每次安装都到处翻。。 1、下载并安装JDK 到官网下载所需的JDK:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html 这儿下…...
Mysql如何避免常见的索引失效
Mysql索引算是非常常用了,用得好提高效率,用的不好适得其反 如何避免常见的索引失效 1.模糊查询 使用 LIKE 查询时,如果搜索表达式以通配符开头,如 %value,MySQL 就无法使用索引来加速查询,因为它无法倒序…...

SpringBoot集成Redis及问题解决
SpringBoot集成Redis 此篇文章为SpringBoot集成Redis的简单介绍,依赖、序列化操作、工具类都可以在后面的实操中直接搬运使用或者在此基础上进行改进使用 1、集成Redis 1.1、新建SpringBoot项目 新建项目这边就不一一介绍了,大家如果还有不会的可以自行…...
PyTorch 人工智能研讨会:6~7
原文:The Deep Learning with PyTorch Workshop 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心…...

AI绘图设计师Stable Diffusion成为生产力工具(五):放大并修复老照片、马赛克照片、身份证件照
S:你安装stable diffusion就是为了看小姐姐么? I :当然不是,当然是为了公司的发展谋出路~~ 预先学习: 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。运行使用时问题《Windows使用Stable Diffusion时…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...