《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_4
《剑指Offer》笔记&题解&思路&技巧&优化_Part_4
- 😍😍😍 相知
- 🙌🙌🙌 相识
- 😢😢😢 开始刷题
- 1. LCR 148. 验证图书取出顺序——栈的压入、弹出序列
- 2. LCR 149. 彩灯装饰记录 I——从上到下打印二叉树
- 3. LCR 150. 彩灯装饰记录 II——I.打印二叉树
- 4. LCR 151. 彩灯装饰记录 III——II.打印二叉树
- 5. LCR 152. 验证二叉搜索树的后序遍历序列——二叉搜索树的后序遍历序列
- 6. LCR 153. 二叉树中和为目标值的路径——二叉树中和为某一值的路径
- 7. LCR 154. 复杂链表的复制——复杂链表的复制
- 8. LCR 155. 将二叉搜索树转化为排序的双向链表——二叉搜索树与双向链表
- 9. LCR 156. 序列化与反序列化二叉树——序列化二叉树
- 10. LCR 157. 套餐内商品的排列顺序——字符串的排列

😍😍😍 相知
当你踏入计算机科学的大门,或许会感到一片新奇而陌生的领域,尤其是对于那些非科班出身的学子而言。作为一位非科班研二学生,我深知学习的道路可能会充满挑战,让我们愿意迎接这段充满可能性的旅程。
最近,我开始了学习
《剑指Offer》和Java编程的探索之旅。这不仅是一次对计算机科学的深入了解,更是对自己学术生涯的一次扩展。或许,这一切刚刚开始,但我深信,通过努力与坚持,我能够逐渐驾驭这门技艺。在这个博客中,我将深入剖析
《剑指Offer》中的问题,并结合Java编程语言进行解析。让我们一起踏上这段学习之旅,共同奋斗,共同成长。无论你是已经驾轻就熟的Java高手,还是像我一样初出茅庐的学子,我们都能在这里找到彼此的支持与激励。让我们携手前行,共同迎接知识的挑战,为自己的未来打下坚实的基石。
这是我上一篇博客的,也希望大家多多关注!
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_1
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_2
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_3
🙌🙌🙌 相识
根据题型可将其分为这样几种类型:
- 结构概念类(数组,链表,栈,堆,队列,树)
- 搜索遍历类(深度优先搜索,广度优先搜索,二分遍历)
- 双指针定位类(快慢指针,指针碰撞,滑动窗口)
- 排序类(快速排序,归并排序)
- 数学推理类(动态规划,数学)
😢😢😢 开始刷题
1. LCR 148. 验证图书取出顺序——栈的压入、弹出序列
题目跳转:https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/description/
想放上自己写的笨思路:

class Solution {public boolean validateBookSequences(int[] putIn, int[] takeOut) {if(putIn.length<=1)return true;boolean[] flag = new boolean[putIn.length];int slow = 0;for(int i = 0;i < putIn.length;i++){if(putIn[i]==takeOut[slow]){slow++;if(slow==putIn.length) return true;flag[i] = true;int temp = i;while(temp>=0&&flag[temp]){temp--;}while(temp>=0&&putIn[temp]==takeOut[slow]){slow++;flag[temp] = true;while(temp>=0&&flag[temp]){temp--;}}}}for(int i = putIn.length-1;i>=0;i--){if(flag[i])continue;else{if(putIn[i]==takeOut[slow]){slow++;flag[i] = true;continue;}else{return false;}}}return true;}
}
虽然代码狗屎,但是我快啊!

下面是大牛的思路!!
解题思路:
如下图所示,给定一个放入序列 putIn 和拿取序列 takeOut ,则放入(压栈)和拿取(弹出)操作的顺序是 唯一确定 的。
下图中 pushed 和 popped 分别对应本题的 putIn 和 takeOut 。

如下图所示,栈的数据操作具有 先入后出 的特性,因此某些拿取序列是无法实现的。

考虑借用一个辅助栈 stack ,模拟 放入 / 拿取操作的排列。根据是否模拟成功,即可得到结果。
- 入栈操作: 按照压栈序列的顺序执行。
- 出栈操作: 每次入栈后,循环判断 “ 栈顶元素 = 拿取序列的当前元素 栈顶元素 = 拿取序列的当前元素 栈顶元素=拿取序列的当前元素” 是否成立,将符合拿取序列顺序的栈顶元素全部拿取。
由于题目规定 “栈的所有数字均不相等” ,因此在循环入栈中,每个元素出栈的位置的可能性是唯一的(若有重复数字,则具有多个可出栈的位置)。因而,在遇到 “栈顶元素 = 拿取序列的当前元素” 就应立即执行出栈。
代码:
class Solution {public boolean validateBookSequences(int[] putIn, int[] takeOut) {Stack<Integer> stack = new Stack<>();int i = 0;for(int num : putIn) {stack.push(num); // num 入栈while(!stack.isEmpty() && stack.peek() == takeOut[i]) { // 循环判断与出栈stack.pop();i++;}}return stack.isEmpty();}
}
2. LCR 149. 彩灯装饰记录 I——从上到下打印二叉树
题目跳转:https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/description/
class Solution {public int[] decorateRecord(TreeNode root) {if(root==null)return new int[0];//层序遍历List<Integer> arrayList = new ArrayList<>();Queue<TreeNode> queue = new LinkedList<>();queue.add(root);queue.add(null);while(!queue.isEmpty()){TreeNode temp = queue.poll();if(temp!=null){arrayList.add(temp.val);if(temp.left!=null)queue.add(temp.left);if(temp.right!=null)queue.add(temp.right);}else{if(!queue.isEmpty())queue.add(null);}}int[] result = new int[arrayList.size()];for(int i = 0;i < result.length;i++){result[i] = arrayList.get(i);}return result;}
}
return list.stream().mapToInt(Integer::intValue).toArray();
3. LCR 150. 彩灯装饰记录 II——I.打印二叉树
题目跳转:https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/description/
/*** 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>> decorateRecord(TreeNode root) {if(root==null)return new ArrayList<>();//层序遍历List<List<Integer>> result = new ArrayList<>();Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int k = queue.size();List<Integer> arrayList = new ArrayList<>();for(int i = 0;i < k;i++){TreeNode temp = queue.poll();arrayList.add(temp.val);if(temp.left!=null)queue.add(temp.left);if(temp.right!=null)queue.add(temp.right);}result.add(arrayList);}return result;}
}
4. LCR 151. 彩灯装饰记录 III——II.打印二叉树
题目跳转:https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/description/
/*** 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>> decorateRecord(TreeNode root) {if(root==null)return new ArrayList<>();//层序遍历List<List<Integer>> result = new ArrayList<>();boolean flag =true;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int k = queue.size();List<Integer> arrayList = new ArrayList<>();for(int i = 0;i < k;i++){TreeNode temp = queue.poll();arrayList.add(temp.val);if(temp.left!=null)queue.add(temp.left);if(temp.right!=null)queue.add(temp.right);}if(flag){result.add(arrayList);flag = false;}else{Collections.reverse(arrayList);result.add(arrayList);flag = true;}}return result;}
}
5. LCR 152. 验证二叉搜索树的后序遍历序列——二叉搜索树的后序遍历序列
题目跳转:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/description/
class Solution {// 要点:二叉搜索树中根节点的值大于左子树中的任何一个节点的值,小于右子树中任何一个节点的值,子树也是public boolean verifyTreeOrder(int[] postorder) {if (postorder.length < 2) return true;return verify(postorder, 0, postorder.length - 1); }// 递归实现private boolean verify(int[] postorder, int left, int right){if (left >= right) return true; // 当前区域不合法的时候直接返回true就好int rootValue = postorder[right]; // 当前树的根节点的值int k = left;while (k < right && postorder[k] < rootValue){ // 从当前区域找到第一个大于根节点的,说明后续区域数值都在右子树中k++;}for (int i = k; i < right; i++){ // 进行判断后续的区域是否所有的值都是大于当前的根节点,如果出现小于的值就直接返回falseif (postorder[i] < rootValue) return false;}// 当前树没问题就检查左右子树if (!verify(postorder, left, k - 1)) return false; // 检查左子树if (!verify(postorder, k, right - 1)) return false; // 检查右子树return true; // 最终都没问题就返回true}
}
6. LCR 153. 二叉树中和为目标值的路径——二叉树中和为某一值的路径
题目跳转:https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/description/
学一下dfs的模板吧~~
function dfsTemplate(root) {//存储最终结果let res;//初始化当前结果let start;//构造递归函数dfs,通常参数为当前节点和当前结果let dfs = function (node, currentResult) {//终止条件返回判断if (node == null) {return;}//更新当前结果currentResult//若到达末尾叶子结点,进行最优结果更新if (node.left == null && node.right == null) {//update res}//左右子树递归dfs(node.left, currentResult);dfs(node.right, currentResult);}dfs(root, start);return res;
}
/*** 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 {List<List<Integer>> result = new ArrayList<>();public List<List<Integer>> pathTarget(TreeNode root, int target) {dfs(root,target,new ArrayList<>());return result;}public void dfs(TreeNode root,int target,List<Integer> list){if(root == null) return;list.add(root.val);if (root.left == null&& root.right == null&& target == root.val){result.add(new ArrayList<>(list));}dfs(root.left, target - root.val,list);dfs(root.right, target - root.val, list);list.remove(list.size()-1);}
}
7. LCR 154. 复杂链表的复制——复杂链表的复制
题目跳转:https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/description/
让我看看谁return head了
如果直接返回啦,你知道不行,面试官问你为什么不行?你要答出关键词!!!浅拷贝与深拷贝

哈希表!
/*
// Definition for a Node.
class Node {int val;Node next;Node random;public Node(int val) {this.val = val;this.next = null;this.random = null;}
}
*/
class Solution {public Node copyRandomList(Node head) {if(head==null) return head;HashMap<Node,Node> hashMap = new HashMap<>();Node cur = head;while(cur!=null){hashMap.put(cur,new Node(cur.val));cur = cur.next;}Node temp = head;while(temp!=null){hashMap.get(temp).next = hashMap.get(temp.next);hashMap.get(temp).random = hashMap.get(temp.random);temp = temp.next;}return hashMap.get(head);}
}
8. LCR 155. 将二叉搜索树转化为排序的双向链表——二叉搜索树与双向链表
题目跳转:https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/description/
class Solution {public Node treeToDoublyList(Node root) {if(root == null)return null;Stack<Node> stack = new Stack<>();Node preNode = null;Node newHead = null;stack.push(root);while(!stack.isEmpty()){Node temp = stack.pop();if(temp!=null){if(temp.right!=null) stack.push(temp.right);stack.push(temp);stack.push(null);if(temp.left!=null) stack.push(temp.left);}else{Node tnode= stack.pop();if(preNode==null){preNode = tnode;preNode.left = tnode;preNode.right = tnode;}else{tnode.left = preNode;preNode.right = tnode;preNode = tnode;}if(newHead==null){newHead = tnode;newHead.left = tnode;newHead.right = tnode;}else{newHead.left = preNode;preNode.right = newHead;}}}return newHead;}
}
class Solution {// 1. 中序,递归,来自解题大佬Node pre, head;public Node treeToDoublyList(Node root) {// 边界值if(root == null) return null;dfs(root);// 题目要求头尾连接head.left = pre;pre.right = head;// 返回头节点return head;}void dfs(Node cur) {// 递归结束条件if(cur == null) return;dfs(cur.left);// 如果pre为空,就说明是第一个节点,头结点,然后用head保存头结点,用于之后的返回if (pre == null) head = cur;// 如果不为空,那就说明是中间的节点。并且pre保存的是上一个节点,// 让上一个节点的右指针指向当前节点else if (pre != null) pre.right = cur;// 再让当前节点的左指针指向父节点,也就连成了双向链表cur.left = pre;// 保存当前节点,用于下层递归创建pre = cur;dfs(cur.right);}
}
9. LCR 156. 序列化与反序列化二叉树——序列化二叉树
题目跳转:https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/description/
public String serialize(TreeNode root) {if(root == null){return "null,";}String res = root.val + ",";res += serialize(root.left);res += serialize(root.right);return res;
}// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {String[] arr = data.split(",");Queue<String> queue = new LinkedList<String>();for(int i = 0; i < arr.length; i++){queue.offer(arr[i]);}return help(queue);
}
public TreeNode help(Queue<String> queue){String val = queue.poll();if(val.equals("null")){return null;}TreeNode root = new TreeNode(Integer.valueOf(val));root.left = help(queue);root.right = help(queue);return root;
}
10. LCR 157. 套餐内商品的排列顺序——字符串的排列
题目跳转:https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/description/
class Solution {public List<String> result = new ArrayList<>();public String[] goodsOrder(String goods) {char[] chars = goods.toCharArray();Arrays.sort(chars);StringBuilder stringBuilder = new StringBuilder();boolean [] visited = new boolean[goods.length()];backTrack(stringBuilder,chars,visited);return result.toArray(new String[0]);}public void backTrack(StringBuilder stringBuilder,char [] words,boolean [] visited){if(stringBuilder.length()==words.length){result.add(stringBuilder.toString());return;}for (int i = 0; i < words.length; i++) {if(i!=0&&words[i]==words[i-1]&&!visited[i-1]){continue;}if(!visited[i]){stringBuilder.append(words[i]);visited[i] = true;backTrack(stringBuilder,words,visited);stringBuilder.deleteCharAt(stringBuilder.length()-1);visited[i] = false;}}}
}
在Java中,
result.toArray(new String[0])是将ArrayListresult转换为字符串数组的一种常见方式。这是在Java集合框架中使用的惯用方法。
具体来说,
result.toArray()返回一个包含ArrayList中所有元素的Object数组。但是,由于泛型擦除的存在,你可能无法直接得到一个泛型数组,比如String[]。因此,通常会传递一个具有相同类型的空数组作为参数,以确保返回的是正确类型的数组。
在这里,
new String[0]是创建了一个空的String数组,然后传递给toArray()方法,告诉它要返回一个String类型的数组。实际上,这个空数组只是用于获取数组的类型信息,它不会被修改或使用。
在Java中,StringBuilder 类提供了 deleteCharAt(int index) 方法,用于删除指定索引位置的字符。该方法的语法是:
public StringBuilder deleteCharAt(int index)
其中,index 参数是要删除的字符的索引位置。索引从0开始,表示字符串中的第一个字符。删除后,StringBuilder的长度将减少一个字符。
例如,假设有一个StringBuilder对象:
StringBuilder sb = new StringBuilder("Hello");
如果你想删除字符串中的第二个字符(索引为1),可以使用 deleteCharAt() 方法:
sb.deleteCharAt(1);
这将使StringBuilder对象的内容变为 “Helo”,即删除了索引为1的字符。请注意,这个方法是在原始StringBuilder对象上直接操作的,而不是创建一个新的StringBuilder对象。
相关文章:
《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_4
《剑指Offer》笔记&题解&思路&技巧&优化_Part_4 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题1. LCR 148. 验证图书取出顺序——栈的压入、弹出序列2. LCR 14…...
数据库第四次实验
目录 1.建立数据表并插入数据 2 视图的创建 2.1 行列子集视图的创建 2.2 多表视图 2.3视图上建立视图 2.4分组视图 2.5带表达式的视图 3 删除视图 4 查询视图 5 更新视图 5.1 修改某一个属性 5.2 删除一条数据 5.3 插入…...
基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于PPNSA扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图和优化收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022a版本运行…...
UnityShader——06UnityShader介绍
UnityShader介绍 UnityShader的基础ShaderLab UnityShader属性块介绍 Properties {//和public变量一样会显示在Unity的inspector面板上//_MainTex为变量名,在属性里的变量一般会加下划线,来区分参数变量和临时变量//Texture为变量命名//2D为类型&…...
人工智能学习与实训笔记(一):零基础理解神经网络
人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 一、什么是神经网络模型 二、机器学习的类型 2.1 监督学习 2.2 无监督学习 2.3 半监督学习 2.4 强化学习 三、网络模型结构基础 3.1 单层网络 编辑 3.2 多层网络 3.3 非线性多层网络…...
LeetCode刷题小记 一、【数组】
LeetCode刷题小记 一、【数组】 文章目录 LeetCode刷题小记 一、【数组】写在前面1. 数组1.1 理论基础1.2 二分查找1.3 移除元素1.4 有序数组的平方1.5 长度最小的子数组1.6 螺旋矩阵II Reference 写在前面 本系列笔记主要作为笔者刷题的题解,所用的语言为Python3&…...
iOS总体框架介绍和详尽说明
iOS是由苹果公司开发的移动操作系统,为iPhone、iPad、iPod Touch等设备提供支持。iOS采用了基于Unix的核心(称为Darwin),并采用了类似于Mac OS X的图形用户界面。以下是iOS的总体框架介绍和详尽说明: UIKit框架&#…...
【C++】const与constexpr详解
1. constexpr:常量表达式 所谓常量表达式,指的就是由多个(≥1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这也意味着,常量表达式一旦确定,其值将无法修改。 实际开发中,我们经常会…...
蓝桥杯:日期统计讲解(C++)
日期统计 本题来自于:2023年十四届省赛大学B组真题 主要考察:暴力。 代码放在下面,代码中重要的细节全都写了注释,非常清晰明了: #include <bits/stdc.h> //万能头文件 using namespace std;int main() {…...
Python re.findall()中的正则表达式包含多个括号时的返回值——包含元组的列表
当re.findall()中的正则表达式包含多个括号时,返回值是一个列表,其中每个元素都是一个元组。这个元组的长度与正则表达式中括号的数量相同,元组中的每个元素都是与相应括号中的模式匹配的文本。 import re # 定义一个包含三个括号的正则表达…...
Python——列表
一、列表的特性介绍 列表和字符串⼀样也是序列类型的数据 列表内的元素直接⽤英⽂的逗号隔开,元素是可变的,所以列表是可变的数据类型,⽽字符串不是。 列表的元素可以是 Python 中的任何类型的数据对象。如:字符串、…...
无人机图像识别技术研究及应用,无人机AI算法技术理论,无人机飞行控制识别算法详解
在现代科技领域中,无人机技术是一个备受瞩目的领域。随着人们对无人机应用的需求在不断增加,无人机技术也在不断发展和改进。在众多的无人机技术中,无人机图像识别技术是其中之一。 无人机图像识别技术是利用计算机视觉技术对无人机拍摄的图像…...
清华AutoGPT:掀起AI新浪潮,与GPT4.0一较高下
引言: 随着人工智能技术的飞速发展,自然语言处理(NLP)领域迎来了一个又一个突破。最近,清华大学研发的AutoGPT成为了业界的焦点。这款AI模型以其出色的性能,展现了中国在AI领域的强大实力。 目录 引言&…...
人工智能学习与实训笔记(二):神经网络之图像分类问题
人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 目录 二、图像分类问题 2.1 尝试使用全连接神经网络 2.2 引入卷积神经网络 2.3 分类函数Softmax 2.4 交叉熵损失函数 2.5 学习率优化算法 2.6 图像预处理算法 2.6.1 随机改变亮暗、对比度和颜色等 …...
SSM框架,spring-aop的学习
代理模式 二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥离出来…...
【设计模式】4、策略模式
文章目录 一、问题二、解决方案2.1 真实世界的类比2.2 策略模式结构2.3 适用场景2.4 实现方式2.5 优缺点2.6 与其他模式的关系 三、示例代码3.1 go3.2 rust 策略模式是一种行为设计模式,它能定义一系列算法,把每种算法分别放入独立的类中,以是…...
【C++学习手札】多态:掌握面向对象编程的动态绑定与继承机制(深入)
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:世界上的另一个我 1:02━━━━━━️💟──────── 3:58 🔄 ◀️ ⏸ ▶️ ☰ &am…...
【机构vip教程】Android SDK手机测试环境搭建
Android SDK 的安装和环境变量的配置 前置条件:需已安装 jdk1.8及 以上版本 1、下载Android SDK,解压后即可(全英文路径);下载地址:http://tools.android-studio.org/index.php/sdk 2、新建一个环境变量&…...
2024.2.18
使用fgets统计给定文件的行数 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./test.txt","w"))NULL){perror("open err");return -1;}fputc(h,fp);fputc(\n,fp);fput…...
Haproxy实验
环境: servera(Haproxy):192.168.233.132 serverb(web1):192.168.233.144 serverc(web2):192.168.233.140 serverd(客户端):192.168.233.141 servera(Haproxy): yum install haproxy -y vim /etc/haproxy/haproxy.cfg(配置文件) # 设置日志&#…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
用js实现常见排序算法
以下是几种常见排序算法的 JS实现,包括选择排序、冒泡排序、插入排序、快速排序和归并排序,以及每种算法的特点和复杂度分析 1. 选择排序(Selection Sort) 核心思想:每次从未排序部分选择最小元素,与未排…...
react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)
之前都是使用react-pdf来渲染pdf文件,这次有个需求是要兼容xp环境,xp上chrome最高支持到49,虽然说iframe或者embed都可以实现预览pdf,但为了后续的定制化需求,还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...
