华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型
本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析;
并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式!
2025华为OD真题目录+全流程解析/备考攻略/经验分享
华为OD机试真题《最小的调整次数/特异性双端队列》:
目录
- 题目名称:最小的调整次数/特异性双端队列
- 题目描述
- Java
- 问题分析
- 解题思路
- 代码实现
- 代码详细解析
- 示例测试
- 综合分析
- python
- 问题分析
- 解题思路
- 代码实现
- 代码详细解析
- 示例测试
- 综合分析
- JavaScript
- 问题分析
- 解题思路
- 代码实现
- 代码详细解析
- 示例测试
- 综合分析
- C++
- 问题分析
- 解题思路
- 代码实现
- 代码详细解析
- 示例测试
- 综合分析
- C语言
- 问题分析
- 解题思路
- 代码实现
- 代码详细解析
- 示例测试
- 综合分析
- GO
- 问题分析
- 解题思路
- 代码实现
- 代码详细解析
- 示例测试
- 综合分析
- 更多内容:
题目名称:最小的调整次数/特异性双端队列
属性 | 内容 |
---|---|
知识点 | 双端队列、逻辑处理 |
时间限制 | 1秒 |
空间限制 | 256MB |
限定语言 | 不限 |
题目描述
有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但只能从头部移出数据。小A依次执行2n个指令(n个添加操作和n个移除操作)。添加指令按顺序插入1到n的数值(可能从头部或尾部添加),移除指令要求按1到n的顺序移出元素。在任何时刻可以调整队列数据顺序,求最少的调整次数以满足移除顺序要求。
输入描述
- 第一行输入整数n(1 ≤ n ≤ 3×10⁵)。
- 后续2n行包含n条添加指令(
head add x
或tail add x
)和n条remove
指令。
输出描述
输出一个整数,表示最小调整次数。
示例
输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解释:
移除顺序需为1→2→3→4→5。在第7步移除时队列头部为2,需调整顺序后移出,调整次数+1。
Java
问题分析
我们需要处理一个特异性的双端队列,每次添加元素可以选择头部或尾部,但只能从头部移除元素。目标是按顺序移除元素1到n,并在必要时调整队列顺序,求出最小的调整次数。
解题思路
- 维护连续区间:跟踪当前连续的右边界
currentMax
,表示当前连续递增序列的最大值。 - 添加操作处理:如果添加的元素是
currentMax + 1
且添加到尾部,扩展连续区间;否则标记队列为无序。 - 移除操作处理:若队列头部是当前期望值
expected
,直接移除;否则调整队列,调整次数加一,并重置连续区间。
代码实现
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();sc.nextLine();int expected = 1;int currentMax = 0;int adjusts = 0;boolean ordered = true;for (int i = 0; i < 2 * n; i++) {String line = sc.nextLine().trim();if (line.startsWith("remove")) {if (ordered && expected == currentMax) {expected++;currentMax = 0;} else {adjusts++;expected++;currentMax = 0;ordered = true;}} else {int x = Integer.parseInt(line.split(" ")[2]);if (ordered) {if (x == currentMax + 1) {currentMax = x;} else {ordered = false;currentMax = Math.max(currentMax, x);}} else {currentMax = Math.max(currentMax, x);}}}System.out.println(adjusts);}
}
代码详细解析
- 输入处理:读取n和后续的2n条指令。
- 变量初始化:
expected
:下一个需要移除的元素,初始为1。currentMax
:当前连续区间的最大值,初始为0。adjusts
:调整次数计数器。ordered
:标记队列是否处于有序状态。
- 处理每条指令:
- 移除指令:
- 若队列有序且当前
expected
等于currentMax
(即头部为expected
),则直接移除。 - 否则调整次数加一,重置
currentMax
并标记队列为有序。
- 若队列有序且当前
- 添加指令:
- 若队列有序且新元素是
currentMax + 1
,扩展连续区间。 - 否则标记队列为无序,并更新
currentMax
。
- 若队列有序且新元素是
- 移除指令:
示例测试
示例输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解析:在第3步移除时队列头部不是1,调整次数加一。后续移除操作无需调整。
另一个测试用例:
3
head add 3
tail add 1
remove
tail add 2
remove
remove
输出:
2
解析:第一次移除时队列头部是3≠1,调整一次;第二次移除时头部是1≠2,调整第二次。
综合分析
- 时间复杂度:O(n),每个指令处理时间为O(1)。
- 空间复杂度:O(1),仅维护几个变量。
- 优势:无需模拟队列操作,直接通过逻辑判断调整次数,高效处理大规模数据。
- 适用性:适用于任何n值,尤其适合高并发和大数据场景。
python
问题分析
我们需要处理一个特异性的双端队列,队列可以从头部或尾部添加元素,但只能从头部移除元素。目标是按顺序移除1到n的元素,并在必要时调整队列顺序,求出最小的调整次数。
解题思路
- 维护连续区间:跟踪当前连续的右边界
current_max
,表示当前可连续移除的最大值。 - 全局最大值:维护
global_max
记录所有已添加元素的最大值。 - 调整条件:当需要移除的元素
expected
超过current_max
时,必须调整队列,调整次数加一,并将current_max
更新为global_max
。
代码实现
n = int(input())
expected = 1
current_max = 0
global_max = 0
adjusts = 0for _ in range(2 * n):line = input().strip()if line.startswith('remove'):if expected > current_max:adjusts += 1current_max = global_maxexpected += 1else:x = int(line.split()[2])global_max = max(global_max, x)if x == current_max + 1:current_max = xprint(adjusts)
代码详细解析
- 输入处理:读取
n
和后续的2n条指令。 - 初始化变量:
expected
:下一个需要移除的元素,初始为1。current_max
:当前连续区间的最大值,初始为0。global_max
:所有已添加元素的最大值,初始为0。adjusts
:调整次数计数器。
- 处理指令:
- 移除指令:若
expected
超过current_max
,调整次数加一,current_max
设为global_max
,随后expected
递增。 - 添加指令:更新
global_max
,若元素是current_max + 1
,扩展连续区间。
- 移除指令:若
- 输出结果:打印总调整次数。
示例测试
示例输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解析:
- 前三次操作后,
current_max=2
,expected=2
。 - 添加3、4、5后,
current_max
保持2,global_max=5
。 - 第四次移除时,
expected=3 > current_max=2
,调整次数加一,current_max
设为5,后续移除无需调整。
另一个测试用例:
3
head add 3
tail add 1
remove
tail add 2
remove
remove
输出:
2
解析:
- 首次移除时,
expected=1 > current_max=0
,调整一次。 - 第二次移除时,
expected=2 > current_max=3
(调整后current_max=3
),调整第二次。
综合分析
- 时间复杂度:O(n),每个指令处理时间为O(1)。
- 空间复杂度:O(1),仅维护几个变量。
- 优势:无需模拟队列操作,通过维护连续区间和全局最大值高效判断调整条件。
- 适用场景:适用于大规模数据,时间复杂度为线性,满足题目约束。
JavaScript
问题分析
我们需要处理一个特异性的双端队列,队列可以从头部或尾部添加元素,但只能从头部移除元素。目标是在执行一系列添加和移除操作后,统计最小的调整次数,使得移除顺序为1到n。
解题思路
- 维护连续区间:跟踪当前连续的右边界
currentMax
,表示当前可以连续移除的最大值。 - 全局最大值:维护
globalMax
记录所有已添加元素的最大值。 - 调整条件:当需要移除的元素
expected
超过currentMax
时,必须调整队列,调整次数加一,并将currentMax
更新为globalMax
。
代码实现
const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout,terminal: false
});let n;
let expected = 1;
let currentMax = 0;
let globalMax = 0;
let adjusts = 0;
let lineCount = 0;rl.on('line', (line) => {if (lineCount === 0) {n = parseInt(line.trim());} else {const trimmedLine = line.trim();if (trimmedLine.startsWith('remove')) {if (expected > currentMax) {adjusts++;currentMax = globalMax;}expected++;} else {const x = parseInt(trimmedLine.split(' ')[2], 10);globalMax = Math.max(globalMax, x);if (x === currentMax + 1) {currentMax = x;}}}lineCount++;if (lineCount === 2 * n + 1) {console.log(adjusts);rl.close();}
});
代码详细解析
- 输入处理:使用
readline
逐行读取输入,第一行为n
。 - 变量初始化:
expected
:下一个需要移除的元素,初始为1。currentMax
:当前可连续移除的最大值,初始为0。globalMax
:所有已添加元素的最大值,初始为0。adjusts
:调整次数计数器。
- 处理指令:
- 移除指令:若
expected > currentMax
,调整次数加一,currentMax
设为globalMax
。 - 添加指令:更新
globalMax
,若元素是currentMax + 1
,扩展currentMax
。
- 移除指令:若
- 输出结果:在所有指令处理完毕后输出调整次数。
示例测试
示例输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解析:
- 前三次操作后,
currentMax=2
,expected=2
。 - 添加3、4、5后,
currentMax=5
。 - 第四次移除时,
expected=2
不超过currentMax
,无需调整。 - 最后一次移除时,
expected=5
超过currentMax
,调整次数加一。
另一个测试用例:
3
head add 3
tail add 1
remove
tail add 2
remove
remove
输出:
2
解析:
- 首次移除时,
expected=1 > currentMax=0
,调整一次。 - 第二次移除时,
expected=2 > currentMax=3
,调整第二次。
综合分析
- 时间复杂度:O(n),每个指令处理时间为O(1)。
- 空间复杂度:O(1),仅维护几个变量。
- 优势:无需模拟队列操作,通过维护连续区间和全局最大值高效判断调整条件。
- 适用场景:适用于大规模数据,时间复杂度为线性,满足题目约束。
C++
问题分析
我们需要处理一个特异性的双端队列,队列只能从头部或尾部添加元素,但移除只能从头部。目标是按顺序移除1到n的元素,计算最小调整次数。调整指的是重新排列队列,使头部元素为当前期望值。
解题思路
- 维护连续区间:跟踪当前可以连续移除的最大值
current_max
,所有已添加元素的最大值global_max
。 - 添加操作:若添加元素等于
current_max + 1
,则扩展连续区间;否则更新global_max
。 - 移除操作:若期望值超过
current_max
,则调整队列,将current_max
设为global_max
,调整次数加一。
代码实现
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;int main() {int n;cin >> n;cin.ignore(); // 忽略换行符int expected = 1; // 期望移除的下一个元素int current_max = 0; // 当前连续区间的最大值int global_max = 0; // 所有已添加元素的最大值int adjusts = 0; // 调整次数string line;for (int i = 0; i < 2 * n; ++i) {getline(cin, line);if (line.substr(0, 6) == "remove") {// 移除操作if (expected > current_max) {adjusts++;current_max = global_max;}expected++;} else {// 解析添加的值istringstream iss(line);string part, op;int x;iss >> part >> op >> x;// 更新全局最大值global_max = max(global_max, x);// 若元素是当前连续区间的下一个值,扩展区间if (x == current_max + 1) {current_max = x;}}}cout << adjusts << endl;return 0;
}
代码详细解析
- 输入处理:读取n并忽略换行符。
- 初始化变量:
expected
:下一个期望移除的元素,初始为1。current_max
:当前连续区间的最大值,初始为0。global_max
:所有已添加元素的最大值,初始为0。adjusts
:调整次数计数器。
- 处理每条指令:
- 移除指令:若期望值超过
current_max
,调整次数加一,current_max
更新为global_max
。 - 添加指令:更新
global_max
,若元素是current_max + 1
,则扩展连续区间。
- 移除指令:若期望值超过
- 输出结果:最终打印调整次数。
示例测试
示例输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解析:
- 添加1和2后,
current_max=2
。 - 第一次移除后,
expected=2
。 - 添加3、4、5后,
current_max=5
。 - 后续移除无需调整,仅在第4步移除时调整一次。
另一个测试用例:
3
head add 3
tail add 1
remove
tail add 2
remove
remove
输出:
2
解析:
- 首次移除3时需调整(期望1)。
- 移除1后,期望2超过
current_max=1
,再次调整。
综合分析
- 时间复杂度:O(n),每个指令处理时间为O(1)。
- 空间复杂度:O(1),仅维护几个变量。
- 优势:无需模拟队列操作,通过维护连续区间和全局最大值高效判断调整条件。
- 适用性:适用于大规模数据,时间复杂度为线性,满足题目约束。
C语言
问题分析
我们需要处理一个特异性的双端队列,队列只能从头部或尾部添加元素,但移除只能从头部。目标是按顺序移除1到n的元素,计算最小调整次数。调整指的是重新排列队列,使头部元素为当前期望值。
解题思路
- 维护连续区间:跟踪当前可以连续移除的最大值
current_max
,所有已添加元素的最大值global_max
。 - 添加操作:若添加元素等于
current_max + 1
,则扩展连续区间;否则更新global_max
。 - 移除操作:若期望值超过
current_max
,则调整队列,将current_max
设为global_max
,调整次数加一。
代码实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define MAX_LINE_LENGTH 20 // 每行指令最大长度int main() {int n;scanf("%d", &n);getchar(); // 读取换行符int expected = 1; // 期望移除的下一个元素int current_max = 0; // 当前连续区间的最大值int global_max = 0; // 所有已添加元素的最大值int adjusts = 0; // 调整次数计数器char line[MAX_LINE_LENGTH];for (int i = 0; i < 2 * n; i++) {fgets(line, MAX_LINE_LENGTH, stdin);line[strcspn(line, "\n")] = '\0'; // 去除换行符if (strcmp(line, "remove") == 0) { // 移除指令if (expected > current_max) { // 需要调整adjusts++;current_max = global_max;}expected++;} else { // 添加指令(head add x 或 tail add x)int x;sscanf(line + 8, "%d", &x); // 跳过"head add "或"tail add "// 更新全局最大值if (x > global_max) global_max = x;// 检查是否扩展连续区间if (x == current_max + 1) {current_max = x;}}}printf("%d\n", adjusts);return 0;
}
代码详细解析
-
输入读取:
scanf("%d", &n); getchar(); // 处理输入n后的换行符
- 读取n后,必须用
getchar()
清除输入缓冲区中的换行符,避免影响后续fgets
读取。
- 读取n后,必须用
-
变量初始化:
int expected = 1; // 下一个期望移除的元素(初始为1) int current_max = 0; // 当前连续区间的最大值(初始为0) int global_max = 0; // 全局最大值(初始为0) int adjusts = 0; // 调整次数计数器
-
处理每条指令:
fgets(line, MAX_LINE_LENGTH, stdin); line[strcspn(line, "\n")] = '\0'; // 去除末尾换行符
fgets
读取整行指令,包括换行符,通过strcspn
找到换行符位置并替换为终止符。
-
移除指令处理:
if (strcmp(line, "remove") == 0) {if (expected > current_max) { // 需要调整adjusts++;current_max = global_max;}expected++; }
- 当期望值
expected
超过current_max
时,必须调整队列,更新current_max
为global_max
,并增加调整次数。
- 当期望值
-
添加指令处理:
sscanf(line + 8, "%d", &x); // 跳过指令前缀(head add 或 tail add) if (x > global_max) global_max = x; if (x == current_max + 1) {current_max = x; }
- 从指令字符串的第8个字符开始解析数值(跳过
head add
或tail add
共8字符)。 - 更新全局最大值
global_max
。 - 若元素是
current_max + 1
,则扩展连续区间。
- 从指令字符串的第8个字符开始解析数值(跳过
示例测试
示例输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解析:
- 添加1和2后,
current_max=2
。 - 第一次
remove
时,expected=1 <= current_max=2
,无需调整。 - 添加3、4、5后,
current_max
保持2(因为3不是连续的)。 - 后续
remove
操作中,当expected=3 > current_max=2
,触发调整,adjusts=1
,current_max=5
。 - 后续操作无需调整,最终总调整次数为1。
另一个测试用例:
3
head add 3
tail add 1
remove
tail add 2
remove
remove
输出:
2
解析:
- 第一次
remove
时,expected=1 > current_max=0
,调整次数+1,current_max=3
。 - 第二次
remove
时,expected=2 > current_max=3
,调整次数+1,current_max=3
。 - 总调整次数为2。
综合分析
-
时间复杂度:O(n)
- 每条指令处理时间为O(1),总共有2n条指令,时间复杂度为O(n)。
-
空间复杂度:O(1)
- 仅使用固定数量的变量,不随输入规模增长。
-
优势:
- 无需模拟队列:通过维护
current_max
和global_max
,避免了实际队列操作的复杂度。 - 高效判断调整条件:直接通过数值比较确定是否需要调整,时间复杂度为O(1)。
- 无需模拟队列:通过维护
-
适用场景:
- 输入规模大(n ≤ 3×10⁵)时,依然保持高效。
- 适用于需要快速判断调整条件的场景,如实时系统或高频交易。
GO
问题分析
我们需要处理一个特异性的双端队列,队列只能从头部或尾部添加元素,但移除只能从头部。目标是按顺序移除1到n的元素,计算最小调整次数。调整指的是重新排列队列,使头部元素为当前期望值。
解题思路
- 维护连续区间:跟踪当前可以连续移除的最大值
currentMax
,所有已添加元素的最大值globalMax
。 - 添加操作:若添加元素等于
currentMax + 1
,则扩展连续区间;否则更新globalMax
。 - 移除操作:若期望值超过
currentMax
,则调整队列,将currentMax
设为globalMax
,调整次数加一。
代码实现
package mainimport ("bufio""fmt""os""strconv""strings"
)func main() {scanner := bufio.NewScanner(os.Stdin)// 读取nscanner.Scan()n, _ := strconv.Atoi(scanner.Text())expected := 1 // 期望的下一个移除元素(初始为1)currentMax := 0 // 当前连续区间的最大值globalMax := 0 // 所有已添加元素的最大值adjusts := 0 // 调整次数计数器// 处理2n条指令for i := 0; i < 2*n; i++ {scanner.Scan()line := scanner.Text()if line == "remove" {// 移除操作:检查是否需要调整if expected > currentMax {adjusts++currentMax = globalMax}expected++} else {// 解析添加操作中的数值(格式:head add x 或 tail add x)parts := strings.Split(line, " ")x, _ := strconv.Atoi(parts[2])// 更新全局最大值if x > globalMax {globalMax = x}// 若元素是连续区间的下一个值,扩展区间if x == currentMax + 1 {currentMax = x}}}fmt.Println(adjusts)
}
代码详细解析
-
输入处理:
- 使用
bufio.Scanner
逐行读取输入,第一行为n
。 - 初始化关键变量:
expected
:下一个期望移除的元素,初始为1。currentMax
:当前连续区间的最大值,初始为0。globalMax
:所有已添加元素的最大值,初始为0。adjusts
:调整次数计数器。
- 使用
-
处理指令:
for i := 0; i < 2*n; i++ {scanner.Scan()line := scanner.Text()
- 循环读取每条指令(共
2n
条)。
- 循环读取每条指令(共
-
移除操作:
if line == "remove" {if expected > currentMax {adjusts++currentMax = globalMax}expected++ }
- 当需要移除的
expected
超过currentMax
时,必须调整队列。 - 调整次数加一,并将
currentMax
设为globalMax
。 expected
递增,准备处理下一个元素。
- 当需要移除的
-
添加操作:
parts := strings.Split(line, " ") x, _ := strconv.Atoi(parts[2])if x > globalMax {globalMax = x }if x == currentMax + 1 {currentMax = x }
- 解析添加操作中的数值(如
head add 1
中的1
)。 - 更新
globalMax
为所有已添加元素的最大值。 - 若当前元素是
currentMax + 1
,则扩展连续区间。
- 解析添加操作中的数值(如
示例测试
示例输入:
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出:
1
解析:
- 添加1和2后,
currentMax=2
。 - 第一次移除时,
expected=1 <= currentMax=2
,无需调整。 - 添加3、4、5时,
globalMax=5
,但currentMax
保持2(因为3不连续)。 - 当移除
expected=3
时,触发调整,adjusts=1
,currentMax=5
。 - 后续移除操作无需调整。
另一个测试用例:
3
head add 3
tail add 1
remove
tail add 2
remove
remove
输出:
2
解析:
- 添加3和1后,
globalMax=3
,但currentMax=0
(元素不连续)。 - 第一次移除时,
expected=1 > currentMax=0
,调整次数+1,currentMax=3
。 - 第二次移除时,
expected=2 > currentMax=3
,调整次数+1。 - 总调整次数为2。
综合分析
-
时间复杂度:O(n)
- 每条指令处理时间为O(1),总共有2n条指令,时间复杂度为O(n)。
-
空间复杂度:O(1)
- 仅使用固定数量的变量,不随输入规模增长。
-
优势:
- 无需模拟队列:通过维护
currentMax
和globalMax
,避免了实际队列操作的复杂度。 - 高效判断调整条件:直接通过数值比较确定是否需要调整,时间复杂度为O(1)。
- 无需模拟队列:通过维护
-
适用场景:
- 输入规模大(n ≤ 3×10⁵)时,依然保持高效。
- 适用于需要快速判断调整条件的场景,如实时系统或高频交易。
更多内容:
https://www.kdocs.cn/l/cvk0eoGYucWA
本文发表于【纪元A梦】,关注我,获取更多实用教程/资源!
相关文章:
华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调…...
华为OD机试真题——统计匹配的二元组个数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《统计匹配…...
4.16学习总结
完成134. 加油站 - 力扣(LeetCode)算法题 学习了filewriter的相关方法,了解了字符流的底层原理...
java面试篇 4.9
目录 mybatis: 1、mybatis的执行流程 2、mybatis是否支持延迟加载? 当我们需要去开启全局的懒加载时: 3、mybatis的一级和二级缓存 微服务 1、springcloud五大组件有哪些 2、服务注册和发现是什么意思?springcloud如何实现…...
子函数嵌套的意义——以“颜色排序”为例(Python)
多一层缩进精减参数传递,参数少平铺书代码写更佳。 笔记模板由python脚本于2025-04-16 11:52:53创建,本篇笔记适合喜欢子函数嵌套结构代码形式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅…...
Python深度学习实现验证码识别全攻略
放在前面 Python深度学习实现验证码识别全攻略 Python深度学习实现验证码识别全攻略 在网络安全领域,验证码作为人机区分的关键防线,广泛应用于登录、注册等场景。随着技术演进,验证码样式愈发复杂,传统识别手段力不从心&#…...
【Linux】su、su-、sudo、sudo -i、sudo su - 命令有什么区别?分别适用什么场景?
目录 su su- sudo sudo -i sudo su - /etc/sudoers su 该命令将启动非登录shell,即虽然以该用户身份启动shell,但使用的是原始用户的环境设置。普通用户账户运行 su 命令切换到另一用户账户,需提供要切换的账户的密码。root用户&…...
算法-同余原理
在计算n个数相加或者相乘再取余时,中间结果可能会溢出导致结果错误,这时可以使用同余原理 一、同余原理 ①加法同余 (a[1] a[2] ... a[n])% m > (a[1] % m a[2] % m ... a[n] % m) % m ② 乘法同余 (…...
深入理解卷积神经网络(CNN):从原理到实践
引言 卷积神经网络(Convolutional Neural Networks, CNN)是深度学习领域最具影响力的架构之一,尤其在计算机视觉任务中表现出色。自2012年AlexNet在ImageNet竞赛中一战成名以来,CNN不断演进,推动着图像识别、医疗影像分析、自动驾驶等领域的快…...
深度学习常见模块实现001
文章目录 1.学习目的2.常见模块使用与实现2.1 ResNet18实现2.2 SeNet模块2.3 CBAM模块 1.学习目的 深度学习在图像处理这块,很多模块已经成型,并没有很多新的东西,更多的是不同的模块堆叠,所以需要我们不断总结,动手实…...
Python实现贪吃蛇三
上篇文章Python实现贪吃蛇一,实现了一个贪吃蛇的基础版本。后面第二篇文章Python实现贪吃蛇二修改了一些不足,但最近发现还有两点需要优化: 1、生成食物的时候有概率和记分牌重合 2、游戏缺少暂停功能 先看生成食物的时候有概率和记分牌重合的…...
windows server C# IIS部署
1、添加IIS功能 windows server 2012、windows server 2016、windows server 2019 说明:自带的是.net 4.5 不需要安装.net 3.5 尽量使用 windows server 2019、2016高版本,低版本会出现需要打补丁的问题 2、打开IIS 3、打开iis应用池 .net 4.5 4、添…...
LLM小白自学笔记:1.两种指令微调
一、LoRA 简单来说,LoRA不直接调整个大模型的全部参数(那样太费资源),而是在模型的某些层(通常是注意力层)加个“旁路”——两个小的矩阵(低秩矩阵)。训练时只更新这俩小矩阵&#x…...
杰弗里·辛顿:深度学习教父
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 杰弗里辛顿:当坚持遇见突破,AI迎来新纪元 一、人物简介 杰弗…...
RHCE 第一次作业
一.定义延迟任务 1.安装邮件服务 [roothaiou ~]# yum install s-nail -y 2.配置邮件服务 [roothaiou ~]# vim /etc/mail.rc 3.测试邮件服务 [roothaiou ~]# echo 88888888 | mail -v -s Passion 13571532874163.com 4.设置定时任务 [roothaiou ~]# crontab -e 二.时间同步…...
库洛游戏一面+二面
目录 一面 1. ArrayList和LinkedList的区别,就是我在插入和删除的时候他们在时间复杂度上有什么区别 2. hashmap在java的底层是怎么实现的 3. 红黑树的实现原理 4. 红黑树的特点 5. 为什么红黑树比链表查询速度快 6. 在java中字符串的操作方式有几种 7. Stri…...
基于多模态深度学习的亚急性脊髓联合变性全流程预测与个性化管理技术方案
目录 技术方案文档1. 数据收集与预处理模块2. 多模态预测模型构建3. 术前风险评估系统4. 术中实时监测系统5. 术后并发症预测与护理6. 统计分析与验证模块7. 健康教育系统技术实现说明技术方案文档 1. 数据收集与预处理模块 功能:构建数据管道,清洗并整合多源数据 伪代码示…...
蓝桥杯日期的题型
做题思路 一般分为3个步骤,首先要定义一个结构体来存储月份的天数,第一循环日期,第二判断日期是否为闰年,第三就是题目求什么 结构体 static int[] ds{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 判断是否闰年的函数 public static void f(int m,int d){//被4整…...
【树形dp题解】dfs的巧妙应用
【树形dp题解】dfs的巧妙应用 [P2986 USACO10MAR] Great Cow Gathering G - 洛谷 题目大意: Bessie 正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。 每个奶牛居住在 N N …...
《AI大模型应知应会100篇》第20篇:大模型伦理准则与监管趋势
第20篇:大模型伦理准则与监管趋势 摘要 随着人工智能(AI)技术的飞速发展,尤其是大模型(如GPT、PaLM等)在自然语言处理、图像生成等领域的广泛应用,AI伦理问题和监管挑战日益凸显。本文将梳理当…...
线上教学平台(vue+springboot+ssm+mysql)含文档+PPT
线上教学平台(vuespringbootssmmysql)含文档PPT 该系统是一个在线教学平台,主要分为管理员和学员两个角色;管理员界面包含首页、交流中心、学员管理、资料类型管理、学习资料管理、交流论坛、我的收藏管理、留言板管理、考试管理…...
Being-0:具有视觉-语言模型和模块化技能的人形机器人智体
25年3月来自北大、北京智源和 BeingBeyond 的论文“Being-0: A Humanoid Robotic Agent with Vision-Language Models and Modular Skills”。 构建能够在现实世界具身任务中达到人类水平表现的自主机器人智体,是人形机器人研究的终极目标。近期,基于基…...
Fiddler 进行断点测试:调试网络请求
目录 一、什么是断点测试? 二、Fiddler 的断点功能 三、如何在 Fiddler 中设置断点? 步骤 1:启动 Fiddler 步骤 2:启用断点 步骤 3:捕获请求 步骤 4:修改请求或响应 四、案例:模拟登录失…...
决策树:ID3,C4.5,CART树总结
树模型总结 决策树部分重点关注分叉的指标,多叉还是单叉,处理离散还是连续值,剪枝方法,以及回归还是分类 一、决策树 ID3(Iterative Dichotomiser 3) 、C4.5、CART决策树 ID3:确定分类规则判别指标、寻找能够最快速降低信息熵的方…...
DDS信号发生器设计
一、基本概述 1.1 DDS简介 DDS信号发生器即直接数字频率合成(Direct Digital Frequency Synthesis,简称DDS)是一种利用数字技术生成信号的方法。它通过数字信号处理技术,将数字信号转换为模拟信号,从而生成高质量的正…...
23黑马产品经理Day01
今天过了一遍23黑马产品经理的基础视频 问题思考维度 抓住核心用户 为什么需要抓住核心用户? 主要原因:用户越来越细分,保持市场竞争力,产品开发推广更聚焦 做产品为什么要了解用户:了解用户的付费点,…...
18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建
学习视频资料来源:https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层: 接口层&#…...
东方潮流亮相广州益民艺术馆|朋克编码“艺术家潮玩”系列开幕引爆热潮
4月15日,由我的宇宙旗下公司朋克编码携“艺术家潮玩”系列亮相广州白云益民艺术馆,标志着其全国文化推广计划正式启航。本次展览围绕“潮玩艺术东方文化”展开,融合传统文化与当代潮流,以年轻化方式赋能中国文化出海。 展览现场潮…...
充电宝项目:规则引擎Drools学习
文章目录 规则引擎 Drools1 问题2 规则引擎概述2.1 规则引擎2.2 使用规则引擎的优势2.3 规则引擎应用场景2.4 Drools介绍 3 Drools入门案例3.1 创建springboot项目 引入依赖3.2 添加Drools配置类3.4 创建实体类Order3.5 orderScore.drl3.6 编写测试类 4 Drools基础语法4.1 规则…...
C++零基础实践教程 文件输入输出
模块八:文件输入输出 (数据持久化) 在之前的模块中,我们学习了如何使用程序处理数据。然而,当程序结束运行时,这些数据通常会丢失。数据持久化 (Data Persistence) 指的是将程序中的数据存储到非易失性存储介质(如硬盘…...
SpringAI+DeepSeek大模型应用开发——1 AI概述
AI领域常用词汇 LLM(LargeLanguage Model,大语言模型) 能理解和生成自然语言的巨型AI模型,通过海量文本训练。例子:GPT-4、Claude、DeepSeek、文心一言、通义干问。 G(Generative)生成式: 根据上…...
数据中台进化史:从概念萌芽到价值变现的蜕变之路
在数字化转型的浪潮中,数据中台已成为企业驾驭数据、驱动业务创新的关键力量。回顾数据中台的发展历程,犹如一场从混沌到有序、从萌芽到成熟的精彩蜕变,它由湖仓一体、数据治理平台、数据服务平台三大核心要素逐步构建而成,每一个…...
【Java学习笔记】运算符
运算符 运算符的类型 算数运算符 赋值运算符 关系运算符(比较哦啊运算符) 逻辑运算符 三元运算符 位运算符(需要二进制基础) 一、算数运算符 运算符计算范例结果正号77-负号b11; -b-11加法9918-减法10-82*乘法7*856/除法9…...
【python】OpenCV—Tracking(10.6)—People Counting
文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数6、参考来自 更多有趣的代码示例,可参考【Programming】 1、功能描述 借助 opencv-python,用 SSD 人形检测模型和质心跟踪方法实现对人群的计数 基于质心的跟踪可以参考 【pyt…...
JavaSE学习(前端初体验)
文章目录 前言一、准备环境二、创建站点(创建一个文件夹)三、将站点部署到编写器中四、VScode实用小设置五、案例展示 前言 首先了解前端三件套:HTML、CSS、JS HTML:超文本标记语言、框架层、描述数据的; CSS…...
智慧城市像一张无形大网,如何紧密连接你我他?
智慧城市作为复杂巨系统,其核心在于通过技术创新构建无缝连接的网络,使物理空间与数字空间深度融合。这张"无形大网"由物联网感知层、城市数据中台、人工智能中枢、数字服务入口和安全信任机制五大支柱编织而成,正在重塑城市运行规…...
Linux常用命令
一、history 用于显示历史命令。 history 10显示最近10条历史命令。!200使用第200行的指令。history -c清空历史记录。 二、pwd 用于显示当前绝对路径。 pwd显示当前绝对路径。 三、ls 用于以行的形式显示当前文件夹下所有内容。 ls -a显示所有内容,包括隐藏文…...
【AI】SpringAI 第二弹:接入 DeepSeek 官方服务
一、接入 DeepSeek 官方服务 通过一个简单的案例演示接入 DeepSeek 实现简单的问答功能 1.添加依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId> </dependency> 2…...
QT的信号槽的直接触发,队列触发,自动触发
在Qt中,信号槽机制是一个非常强大的特性,它用于实现对象之间的通信。除了默认的直接触发方式之外,Qt还提供了队列触发等不同的触发方式。 1. 直接触发(Direct Connection) 直接触发是最常见的连接方式,信…...
typescript html input无法输入解决办法
input里加上这个: onkeydown:(e: KeyboardEvent) > {e.stopPropagation();...
工厂能耗系统智能化解决方案 —— 安科瑞企业能源管控平台
安科瑞顾强 政策背景与“双碳”战略驱动 2025年《政府工作报告》明确提出“单位国内生产总值能耗降低3%左右”的目标,要求通过产业结构升级(如高耗能行业技术革新或转型)、能源结构优化(提高非化石能源占比)及数字化…...
栅格数据处理
一、栅格数据的引入与基本操作 (一)加载栅格数据 在 ArcPy 中,栅格数据可以通过 arcpy.Raster 类来加载。例如,如果你有一个存储在本地路径下的栅格数据文件(如 GeoTIFF 格式),可以这样加载&a…...
C语言文件操作
本文重点: 什么是文件 文件名 文件类型 文件缓冲区 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 文件结束的判定 什么是文件 磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件 程序文件 包括源程序文…...
毛笔书体检测-hog+svm python opencv源码
链接:https://pan.baidu.com/s/1l-bw8zR9psv1HycmMqQBqQ?pwd2ibp 提取码:2ibp --来自百度网盘超级会员V2的分享 1、毛笔字检测运行流程 如果解压文件发现乱码,可以下载Bandizip 解压文件 数据集在百度网盘里面 将文件名字改成images c…...
基于YOLOV11的道路坑洼分析系统
基于YOLOV11的道路坑洼分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】图形化界面与实时检测统计可视化功能 【技术栈】 ①:系统环境:Windows/MacOS/Linux多平台支持,推荐NVIDIA GPU加速 ②…...
【系统搭建】DPDK安装配置与helloworld运行
一,安装相关依赖 1. 安装依赖 sudo apt update && sudo apt install -y \build-essential libnuma-dev meson ninja-build pciutils#安装Python3与PIP3 sudo apt install python3-pip2. 升级 pip 和 setuptools sudo apt install python3-pip python3-de…...
Distortion, Animation Raymarching
这节课的主要目的是对uv进行操作,实现一些动画的效果,实际就是采样的动画 struct texDistort {float2 texScale(float2 uv, float2 scale){float2 texScale (uv - 0.5) * scale 0.5;return texScale;}float2 texRotate(float2 uv, float angle){float…...
架构风格(高软59)
系列文章目录 架构风格 文章目录 系列文章目录前言一、架构风格定义?二、架构风格分类总结 前言 本节讲明架构风格知识点。 一、架构风格定义? 二、架构风格分类 总结 就是高软笔记,大佬请略过!...
免费使用RooCode + Boomerang AI + Gemini 2.5 Pro开发套件
若您正在寻找利用免费AI工具简化应用开发的方法,这份指南将为您揭开惊喜。 我们将详解如何免费整合RooCode、Boomerang AI智能代理与Google Gemini 2.5 Pro API,在Visual Studio Code中实现自动化编程加速。 这套方案能让您在几分钟内从创意跃迁至可运行原型。 套件构成与…...
《MAmmoTH2: Scaling Instructions from the Web》全文翻译
《MAmmoTH2: Scaling Instructions from the Web》 MAmmoTH2:从网络规模化采集指令数据 摘要 指令调优提升了大语言模型(LLM)的推理能力,其中数据质量和规模化是关键因素。大多数指令调优数据来源于人工众包或GPT-4蒸馏。我们提…...