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

leetCode热题10-15 解题代码,思路

前言

计划做一系列算法题的文章,因为自己这块确实比较薄弱,但又很重要!写这篇文章前,我已经刷了一本剑指offer,leetcode top150道,牛客某题库106道 这个样子吧,感觉题量算是入门了吧?个人感觉还是入门级别,因为最开始的题完全是硬刷,全是混个脸熟。到现在才开始对里面的门门道道研究,总结。
所以打算从这篇文章开始,静下心来过一遍。留下自己的足迹也算是给自己打气吧!


leetcode

  • 前言
  • 1 ✔ [21]合并两个有序链表 Easy 2023-02-22 222
  • 2 [102]二叉树的层序遍历 Medium 2022-09-21 202
  • 3 ✔ [33]搜索旋转排序数组 Medium 2023-03-08 197
  • 4 ✔ [20]有效的括号 Easy 2023-01-12 194
  • 5 ✔ [5]最长回文子串 Medium 2023-03-05 193
  • 6 ✔ [121]买卖股票的最佳时机 Easy 2023-01-12 192

1 ✔ [21]合并两个有序链表 Easy 2023-02-22 222

//将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
//
//
//
// 示例 1:
//
//
//输入:l1 = [1,2,4], l2 = [1,3,4]
//输出:[1,1,2,3,4,4]
//
//
// 示例 2:
//
//
//输入:l1 = [], l2 = []
//输出:[]
//
//
// 示例 3:
//
//
//输入:l1 = [], l2 = [0]
//输出:[0]
//
//
//
//
// 提示:
//
//
// 两个链表的节点数目范围是 [0, 50]
// -100 <= Node.val <= 100
// l1 和 l2 均按 非递减顺序 排列
//
//
// Related Topics 递归 链表 👍 2826 👎 0

自测代码

public class P21_MergeTwoSortedLists{public static void main(String[] args) {int[] ints = {1, 2, 4};ListNode listNode = new ListNode(ints);int[] ints2 =  {1,3,4};ListNode listNode2 = new ListNode(ints2);//测试代码Solution solution = new P21_MergeTwoSortedLists().new Solution();ListNode listNode1 = solution.mergeTwoLists(listNode, listNode2);System.out.println(listNode1.toString());}//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode listNode = new ListNode(0);ListNode res = listNode;while (list1 != null || list2 != null ){if (list1 == null){listNode.next = list2;return  res.next;}if(list2 == null){listNode.next = list1;return  res.next;}if (list1.val > list2.val) {listNode.next = list2;list2 = list2.next;}else {listNode.next = list1;list1 = list1.next;}listNode = listNode.next;}return res.next;}
}
//leetcode submit region end(Prohibit modification and deletion)}

提交代码

class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode listNode = new ListNode(0);ListNode res = listNode;while (list1 != null || list2 != null ){if (list1 == null){listNode.next = list2;return  res.next;}if(list2 == null){listNode.next = list1;return  res.next;}if (list1.val > list2.val) {listNode.next = list2;list2 = list2.next;}else {listNode.next = list1;list1 = list1.next;}listNode = listNode.next;}return res.next;}
}

2 [102]二叉树的层序遍历 Medium 2022-09-21 202

//给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
//
//
//
// 示例 1:
//
//
//输入:root = [3,9,20,null,null,15,7]
//输出:[[3],[9,20],[15,7]]
//
//
// 示例 2:
//
//
//输入:root = [1]
//输出:[[1]]
//
//
// 示例 3:
//
//
//输入:root = []
//输出:[]
//
//
//
//
// 提示:
//
//
// 树中节点数目在范围 [0, 2000] 内
// -1000 <= Node.val <= 1000
//
//
// Related Topics 树 广度优先搜索 二叉树 👍 1604 👎 0

自测代码

public class P102_BinaryTreeLevelOrderTraversal{public static void main(String[] args) {//测试代码Solution solution = new P102_BinaryTreeLevelOrderTraversal().new Solution();String data = "[3,9,20,null,null,15,7]";TreeNode treeNode = mkTree(data);List<List<Integer>> lists = solution.levelOrder(treeNode);for (int i = 0; i < lists.size(); i++) {System.out.println();List<Integer> integers = lists.get(i);for (int i1 = 0; i1 < integers.size(); i1++) {System.out.print("  " + integers.get(i1));}}}//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {Queue<TreeNode> queue = new ArrayDeque<>();List<List<Integer>> res = new ArrayList<>();if(root != null){queue.add(root);}if (!queue.isEmpty()) {do {queue = check(queue, res);}while (!queue.isEmpty()) ;}return res;}public Queue<TreeNode> check(Queue<TreeNode> queue,List<List<Integer>> data){Queue<TreeNode> res = new ArrayDeque<>();ArrayList<Integer> integers = new ArrayList<>();while (!queue.isEmpty() ){TreeNode poll = queue.poll();if (poll == null) {break;}int val = poll.val;integers.add(val);TreeNode left = poll.left;if (left != null) {res.add(left);}TreeNode right = poll.right;if (right != null) {res.add(right);}}data.add(integers);return res;}}

提交代码

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {Queue<TreeNode> queue = new ArrayDeque<>();List<List<Integer>> res = new ArrayList<>();if(root != null){queue.add(root);}if (!queue.isEmpty()) {do {queue = check(queue, res);}while (!queue.isEmpty()) ;}return res;}public Queue<TreeNode> check(Queue<TreeNode> queue,List<List<Integer>> data){Queue<TreeNode> res = new ArrayDeque<>();ArrayList<Integer> integers = new ArrayList<>();while (!queue.isEmpty() ){TreeNode poll = queue.poll();if (poll == null) {break;}int val = poll.val;integers.add(val);TreeNode left = poll.left;if (left != null) {res.add(left);}TreeNode right = poll.right;if (right != null) {res.add(right);}}data.add(integers);return res;}}

主要是使用了队列的特性,然后通过新建一个方法更清晰的区分,每一层的数据

3 ✔ [33]搜索旋转排序数组 Medium 2023-03-08 197

//整数数组 nums 按升序排列,数组中的值 互不相同 。
//
// 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[
//k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2
//,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。
//
// 给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。
//
// 你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。
//
//
//
// 示例 1:
//
//
//输入:nums = [4,5,6,7,0,1,2], target = 0
//输出:4
//
//
// 示例 2:
//
//
//输入:nums = [4,5,6,7,0,1,2], target = 3
//输出:-1
//
// 示例 3:
//
//
//输入:nums = [1], target = 0
//输出:-1
//
//
//
//
// 提示:
//
//
// 1 <= nums.length <= 5000
// -10⁴ <= nums[i] <= 10⁴
// nums 中的每个值都 独一无二
// 题目数据保证 nums 在预先未知的某个下标上进行了旋转
// -10⁴ <= target <= 10⁴
//
//
// Related Topics 数组 二分查找 👍 2422 👎 0

自测代码


public class P33_SearchInRotatedSortedArray{public static void main(String[] args) {//测试代码Solution solution = new P33_SearchInRotatedSortedArray().new Solution();String data = "[4,5,6,7,0,1,2]";int[] ints = StrToIntArray(data);System.out.println(solution.search(ints, 0));}//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public int search(int[] nums, int target) {int num = nums.length;int res = -1;if (nums.length == 0){return  res;}if ( num == 1 ) {if (nums[0] == target) {return 0;}else {return res;}}int r = 0;int l = num-1;while (r <= l){int mid = (l-r)/2 +r;if ( nums[mid] == target ) {return mid;}if (nums[r] <= nums[mid] ) {if (  nums[r] <= target && target < nums[mid] ) {l = mid -1 ;}else {r = mid +1;}}else{if (target <= nums[l] && target > nums[mid] ) {r = mid +1 ;}else{l = mid -1;}}}return res;}
}
//leetcode submit region end(Prohibit modification and deletion)}

提交代码

class Solution {public int search(int[] nums, int target) {int num = nums.length;int res = -1;if (nums.length == 0){return  res;}if ( num == 1 ) {if (nums[0] == target) {return 0;}else {return res;}}int r = 0;int l = num-1;while (r <= l){int mid = (l-r)/2 +r;if ( nums[mid] == target ) {return mid;}if (nums[r] <= nums[mid] ) {if (  nums[r] <= target && target < nums[mid] ) {l = mid -1 ;}else {r = mid +1;}}else{if (target <= nums[l] && target > nums[mid] ) {r = mid +1 ;}else{l = mid -1;}}}return res;}
}

中等难度,笔者之前也刷到过,但是还是想了很久。
第一: 看错了题目,以为要求旋转之前 target的下标
第二:善用二分查找方法, 遇到查找的时候想想二分方法,二分方法有一个特性就是可以直接舍弃一半数据,用另一半数据计算,所以当有一部分条件不是有序的时候,二分还是可以使用。
第三:边界值判断, 如果直接把mind赋值给左或者右,可能会导致死循环,因为 只有两个数的时候做除法mind值可能一直和左下标相同。
所以之后在自己声明了左右指针的时候,赋值时最好把中间值+1或者-1。
另外 循环条件也需要改成<=或者>= 因为 +1 / -1之后很可能导致 两个数相等,这个时候需要有等于的条件继续循环判断

4 ✔ [20]有效的括号 Easy 2023-01-12 194

//给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
//
// 有效字符串需满足:
//
//
// 左括号必须用相同类型的右括号闭合。
// 左括号必须以正确的顺序闭合。
// 每个右括号都有一个对应的相同类型的左括号。
//
//
//
//
// 示例 1:
//
//
//输入:s = “()”
//输出:true
//
//
// 示例 2:
//
//
//输入:s = “()[]{}”
//输出:true
//
//
// 示例 3:
//
//
//输入:s = “(]”
//输出:false
//
//
//
//
// 提示:
//
//
// 1 <= s.length <= 10⁴
// s 仅由括号 ‘()[]{}’ 组成
//
//
// Related Topics 栈 字符串 👍 3786 👎 0

自测代码

public class P20_ValidParentheses{public static void main(String[] args) {//测试代码Solution solution = new P20_ValidParentheses().new Solution();String s = "]";solution.isValid(s);}//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public boolean isValid(String s) {HashMap<String, String> hashMap = new HashMap<>();hashMap.put("(",")");hashMap.put("{","}");hashMap.put("[","]");String[] split = s.split("");int length = split.length;Stack<String> data = new Stack<>();try{for (int i = 0; i < length; i++) {String s1 = hashMap.get(split[i]);if (s1 == null) {String pop = data.pop();if (pop == null || !pop.equals(split[i])) {return false;}}else{data.add(s1);}}}catch (Exception e){return false;}if (!data.empty()) {return  false;}return true;}}
//leetcode submit region end(Prohibit modification and deletion)}

提交代码

class Solution {public boolean isValid(String s) {HashMap<String, String> hashMap = new HashMap<>();hashMap.put("(",")");hashMap.put("{","}");hashMap.put("[","]");String[] split = s.split("");int length = split.length;Stack<String> data = new Stack<>();try{for (int i = 0; i < length; i++) {String s1 = hashMap.get(split[i]);if (s1 == null) {String pop = data.pop();if (pop == null || !pop.equals(split[i])) {return false;}}else{data.add(s1);}}}catch (Exception e){return false;}if (!data.empty()) {return  false;}return true;}}

对我来说没有太大难度了,感觉对字符串操作的我貌似都擅长一些。
这道题目就是利用了一下栈的先进先出特性

5 ✔ [5]最长回文子串 Medium 2023-03-05 193

//给你一个字符串 s,找到 s 中最长的回文子串。
//
// 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
//
//
//
// 示例 1:
//
//
//输入:s = “babad”
//输出:“bab”
//解释:“aba” 同样是符合题意的答案。
//
//
// 示例 2:
//
//
//输入:s = “cbbd”
//输出:“bb”
//
//
//
//
// 提示:
//
//
// 1 <= s.length <= 1000
// s 仅由数字和英文字母组成
//
//
// Related Topics 字符串 动态规划 👍 6257 👎 0

动态规划 这个问题我其实已经写了好几遍了,但是这次再做还是做不出来,或者想到的方法非常复杂。感觉还是没有完全掌握动态规划
因此,我特地去学习了动态规划相关的知识。
首先 动态规划是解决 有重复计算,可以拆分成子问题的一类问题的解决方案。
主要表现 求最短路径,最大回文子序列,多少种走法。
分析原问题 =》找出子问题 =》 找出子问题和原问题的关系 =》 解决子问题 并记录答案=》根据子问题 解决原问题。
正确子问题: 一般情况下都比较简单,特点 一般是 个数少,逻辑和原问题有关联
记录子问题答案 : 通过记录子问题答案,帮助解决原问题,减少重复计算,一般通过数组,二维数组来做。

这道题目 求最长回文子序列,
首先回文子序列 如果满足,那么去调开头和结尾的字母,依然满足是回文子序列。
如果一直去除,那么就会变成单个字母或者两个相同的字母,
利用这个特性,就可以找到子问题。

因为子问题和原问题的连接点 是两边添加参数,所以一定要注意动态规划的循环顺序

然后就是边界值的判断,
只有一个的时候肯定是回文串,两个的时候只需要判断两个是否相等。

自测代码

public class P5_LongestPalindromicSubstring {public static void main(String[] args) {//测试代码Solution solution = new P5_LongestPalindromicSubstring().new Solution();String s = "bb";System.out.println(solution.longestPalindrome(s));}//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)class Solution {public String longestPalindrome(String s) {char[] chars = s.toCharArray();int length = chars.length;/*简单的动态规划都是记录一个值,这个最长回文子序列可以通过记录左右两个值*/Boolean[][] data  = new Boolean[length][length];data[0][0] = true;int[] res = new int[2];res[0] = 0;res[1] = 0;for (int i = 1; i < length; i++) {for (int j = 0; j < i; j++) {/*长度小于三的情况*/if (i - j < 3) {if (chars[i] == chars[j]) {data[j][i] = true;}else {data[j][i] = false;}} else if (chars[i] == chars[j] &&  data[j+1][i-1]   ) {data[j][i] = true;}else{data[j][i] = false;}if (data[j][i]) {if (res[1] - res[0] <= i -j) {res[0] = j;res[1] = i;}}}}//            0 1 2 3 4return s.substring(res[0],res[1]+1);}}
//leetcode submit region end(Prohibit modification and deletion)}

提交代码

    class Solution {public String longestPalindrome(String s) {char[] chars = s.toCharArray();int length = chars.length;/*简单的动态规划都是记录一个值,这个最长回文子序列可以通过记录左右两个值*/Boolean[][] data  = new Boolean[length][length];data[0][0] = true;int[] res = new int[2];res[0] = 0;res[1] = 0;for (int i = 1; i < length; i++) {for (int j = 0; j < i; j++) {/*长度小于三的情况*/if (i - j < 3) {if (chars[i] == chars[j]) {data[j][i] = true;}else {data[j][i] = false;}} else if (chars[i] == chars[j] &&  data[j+1][i-1]   ) {data[j][i] = true;}else{data[j][i] = false;}if (data[j][i]) {if (res[1] - res[0] <= i -j) {res[0] = j;res[1] = i;}}}}//            0 1 2 3 4return s.substring(res[0],res[1]+1);}}

6 ✔ [121]买卖股票的最佳时机 Easy 2023-01-12 192

//给定一个数组 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。
//
//
//
//
// 提示:
//
//
// 1 <= prices.length <= 10⁵
// 0 <= prices[i] <= 10⁴
//
//
// Related Topics 数组 动态规划 👍 2672 👎 0

配合上一道也是动态规划问题,正好巩固一下
这道题目 相对来说简单,
还是通过找关系,
求最大收益,我就先求每天的最大收益,每天的最大收益和买入时的价格有关,就记录能够买入的最小价格,
循环的顺序从前往后,子问题就和主问题联系起来了

自测代码

public class P121_BestTimeToBuyAndSellStock{public static void main(String[] args) {//测试代码Solution solution = new P121_BestTimeToBuyAndSellStock().new Solution();String data = "[7,1,5,3,6,4]";System.out.println(solution.maxProfit(ArrayUtil.StrToIntArray(data)));}//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public int maxProfit(int[] prices) {int len = prices.length;int min = Integer.MAX_VALUE;int res = 0;for (int i = 0; i < len; i++) {min = prices[i] <min ? prices[i] : min;res = prices[i] - min > res ? prices[i] - min : res;}return res;}
}
//leetcode submit region end(Prohibit modification and deletion)}

提交代码

class Solution {public int maxProfit(int[] prices) {int len = prices.length;int min = Integer.MAX_VALUE;int res = 0;for (int i = 0; i < len; i++) {min = prices[i] <min ? prices[i] : min;res = prices[i] - min > res ? prices[i] - min : res;}return res;}
}

相关文章:

leetCode热题10-15 解题代码,思路

前言 计划做一系列算法题的文章&#xff0c;因为自己这块确实比较薄弱&#xff0c;但又很重要&#xff01;写这篇文章前&#xff0c;我已经刷了一本剑指offer&#xff0c;leetcode top150道&#xff0c;牛客某题库106道 这个样子吧&#xff0c;感觉题量算是入门了吧&#xff1…...

同步辐射GISAXS和GIWAXS的原理及应用领域

同步辐射GISAXS和GIWAXS是两种常用的同步辐射X射线衍射技术&#xff0c;它们在材料科学、化学、生物学、物理学等领域中广泛应用。本文将从原理、实验方法和应用三个方面&#xff0c;对同步辐射GISAXS和GIWAXS进行描述和比较。 一、原理 GISAXS和GIWAXS都是利用X射线与样品相互…...

OpManager 进行网络性能管理

计算机网络构成了任何组织的 IT 基础架构的支柱。由于企业严重依赖基于互联网的应用程序&#xff0c;由于网络相关问题&#xff0c;最终用户不受影响非常重要。因此&#xff0c;借助网络管理解决方案监控和提高网络性能对于保持企业始终正常运行至关重要。这将确保维护服务级别…...

面试被问到向上转型和向下转型时,怎么回答?

目录 前置小知识 1、向上转型 补充&#xff1a;向上转型的三种情况 2、向下转型 使用关键字&#xff1a;instanceof 3、转型带来了什么好处 前置小知识 java中的继承&#xff0c;我们简单回顾一下 通过java中的继承机制&#xff0c;可以实现一个类继承另一个类&#xff…...

加密月解密:概述,基础篇

加密月解密&#xff1a;概述&#xff0c;基础篇 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…...

DC-DC升压模块隔离高压稳压电源直流变换器12v24v48v转600V1000V1100V1500V2000V3000V

特点● 效率高达 80%● 2*2英寸标准封装● 单双电压输出● 价格低● 大于600V高压,稳压输出● 工作温度: -40℃~85℃● 阻燃封装&#xff0c;满足UL94-V0 要求● 温度特性好● 可直接焊在PCB 上应用HRB W1~25W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&am…...

pandas数据分析(三)

书接pandas数据分析&#xff08;二&#xff09; 文章目录DataFrame数据处理与分析处理超市交易数据中的异常值处理超市交易数据中的缺失值处理超市交易数据中的重复值使用数据差分查看员工业绩波动情况使用透视表与交叉表查看业绩汇总数据使用重采样技术按时间段查看员工业绩Da…...

cpu performance profiling

精彩文章分享1. android performanceAndroid 性能分析工具介绍 (qq.com)手机Android存储性能优化架构分析 (qq.com)抖音 Android 性能优化系列&#xff1a;启动优化之理论和工具篇 (qq.com)那些年&#xff0c;我们一起经历过的 Android 系统性能优化 (qq.com)Android卡顿&#…...

vue2启动项目npm run dev报错 Error: Cannot find module ‘babel-preset-es2015‘ 修改以及问题原因

报错内容如下图&#xff1a; 说找不到模块 babel-preset-es2015。 在报错之前&#xff0c;我正在修改代码&#xff0c;使用 ElementUI 的按需引入方式&#xff0c;修改了 babel.config.js 。 注意&#xff1a;vue/cli 脚手架4版本已经使用了 babel7 &#xff0c;所以项目中…...

*9 set up 注意点

1、set up 执行的时机&#xff1a;beforeCreate 之前执行一次&#xff0c;this 是 undefined 2、set up 的参数&#xff1a; props&#xff1a;值为对象&#xff0c;组件外传递属性&#xff0c;内部声明并且接收属性 context&#xff1a;上下文对象&#xff0c;其内部包含三个…...

linux目录——文件管理

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

使用new bing简易教程

申请new bing 首先先申请new bing然后等待通过&#xff0c;如下图 申请完&#xff0c;用edge浏览器&#xff0c;若有科学方法&#xff0c;就能在右上角的聊天进行向AI提问 使用插件来进行直接访问New Bing 在edge浏览器中安装一个插件&#xff0c;地址为&#xff1a;Mod…...

idea插件分享 显著提高开发效率

idea插件 Prettier 作用&#xff1a;支持代码格式化&#xff08;java、js等&#xff09; 另外支持js内方法跳转和js中ajax请求跳转到java代码里面 下载&#xff1a;Prettier SQL Params Setter 作用&#xff1a;将日志中mapper输出preparing和paramters处理成完整可直接执行…...

文心一言发布我怎么看?

文心一言发布会 有想看发布会视频的朋友,关注爱书不爱输的程序猿,私信找我拿 我只简短的回答两个问题: 1.文心一言能否为百度止颓&#xff1f; 首先,百度的颓势是由于多种因素导致的&#xff0c;包括市场竞争压力、业务发展战略的失误、管理体制的问题等。要想止颓&#xff0c;…...

100. 增减序列

给定一个长度为 n 的数列 a1,a2,…,an&#xff0c;每次可以选择一个区间 [l,r]&#xff0c;使下标在这个区间内的数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样&#xff0c;并求出在保证最少次数的前提下&#xff0c;最终得到的数列可能有多少种。 输入…...

操作系统之进程的初步认识(1)

进程1. 进程的相关概念1.1 进程的定义1.2 进程的概念(1)1.3 进程的概念(2)2. 进程和程序的区别3. 进程管理:3.1 进程的结构体有哪些属性(1) Pid(操作系统里指进程识别号)(2) 内存指针(3) 文件描述符表4. 进程调度:(1) 并行(2) 并发5. 进程调度需要的属性(1) 进程状态(2) 进程优…...

【Java】你真的懂封装吗?一文读懂封装-----建议收藏

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 前言 write in the front: 如何理解封装&#xff1f; 试想&#xff1a;我们使用微波炉的时候&#xff0c;只用设置好时间&#xff0c;按下“开始”…...

使用MobaXterm ssh远程登录Ubuntu 20.04

使用MobaXterm 远程登录Ubuntu 20.04 首先需要到官网下载一个MobaXterm 准备一台Ubuntu20.04的虚拟机。使用ifconfig查看IP 我这里的虚拟机是新安装的&#xff0c;所以会提示命令不存在&#xff0c;只要按照提示输入&#xff1a; sudo apt install net-tools接着等待安装完成…...

蓝桥杯历年真题训练

2012年第四届全国电子专业人才设计与技能大赛“自动售水机”设计任务书1. 系统框图接下来我们将任务分块&#xff1a; 1. 按键控制单元 设定按键 S7 为出水控制按键&#xff0c;当 S7 按下后&#xff0c;售水机持续出水&#xff08;继电器接通&#xff0c;指示 灯 L10 点亮&…...

Spring事务报错: org.springframework.transaction.UnexpectedRollbackException

异常信息&#xff1a;支持当前事务&#xff0c;如果不存在则抛出异常。事务被回滚&#xff0c;因为它被标记为仅回滚 org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-onlyat org.springframe…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...