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

OJ在线编程常见输入输出练习【JavaScript】

(注:本文是对【JavaScript Node 】 ACM模式,常见输入输出练习相关内容的介绍!!!) 

 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ

一、ACM模式下的编辑页面

二、ACM模式下,固定代码解析 【JavaScript  Node】

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void (async function () {// Write your code here})();
const rl = require("readline").createInterface({ input: process.stdin });
  • 这行代码创建了一个读取标准输入的 readline 接口。require("readline") 导入了 Node.js 的 readline 模块,createInterface 方法创建了一个新的 readline 接口,input: process.stdin 表示从标准输入(通常是用户输入)读取数据。
var iter = rl[Symbol.asyncIterator]();
  • 这行代码获取了 readline 接口的异步迭代器。Symbol.asyncIterator 是一个内置的符号,表示异步迭代器的方法。iter 是一个异步迭代器对象,可以用来逐行读取输入。
const readline = async () => (await iter.next()).value;
  • 这行代码定义了一个异步函数 readline,该函数每次调用时都会返回下一行输入的值。await iter.next() 获取到一个包含 value 和 done 属性的对象,value 是当前行的输入内容,done 表示是否已经读取到输入的末尾。
void (async function () {// Write your code here})();
  • 这行代码定义了一个立即执行的异步函数。void 关键字确保这个函数不会返回任何值。async function 定义了一个异步函数,可以使用 await 关键字来等待异步操作完成。

三、编程题练习及代码解析

 A+B(1)

1. 题目信息

输入描述:

输入包括两个正整数a,b(1 <= a, b <= 1000),输入数据包括多组。

输出描述:

输出a+b的结果

示例1

输入例子:

1 5
10 20

输出例子:

6
30
2. 答案及代码解析

代码解析: 
while (true) {let line = await readline();if (!line) break; // 如果没有输入数据,退出循环let [a, b] = line.split(" ").map(Number);if (a < 1 || a > 1000 || b < 1 || b > 1000) {console.error("输入数据不在1到1000范围内");continue;}console.log(a + b);}
 while (true) {
  • 这行代码开始一个无限循环,用于持续读取输入,直到没有更多输入为止。
        let line = await readline();
  • 这行代码调用 readline 函数,异步读取一行输入并将其赋值给 line 变量。
        if (!line) break; // 如果没有输入数据,退出循环
  • 这行代码检查 line 是否为空。如果没有读取到任何输入数据(即输入结束),则退出循环。
        let [a, b] = line.split(' ').map(Number);
  • 这行代码将当前行的输入按空格分割成两个字符串,然后使用 map(Number) 将这两个字符串转换为数字,并将它们分别赋值给 a 和 b
        if (a < 1 || a > 1000 || b < 1 || b > 1000) {
  • 这行代码检查 a 和 b 是否在 1 到 1000 的范围内。如果任何一个数不在该范围内,则执行下面的代码块。
            console.error("输入数据不在1到1000范围内");
  • 这行代码输出错误信息,提示输入数据不在 1 到 1000 的范围内。
            continue;
  • 这行代码跳过当前循环的剩余部分,继续下一次循环。
        console.log(a + b);
  • 这行代码计算 a 和 b 的和,并将结果输出到控制台。
    }
}();
  • 这两行代码结束了 while 循环和立即执行的异步函数。

拓展:
        let [a, b] = line.split(' ').map(Number);

这行代码是 JavaScript 代码,用于从一个字符串中提取两个数字,并将它们分别赋值给变量 a 和 b。具体的解释如下:

  1. line.split(' ')

    • line 是一个字符串,假设它的内容是 "10 20"
    • split(' ') 方法会将字符串 line 按空格分割成一个数组。例如,"10 20".split(' ') 会返回 ['10', '20']
  2. .map(Number)

    • map 方法会遍历数组中的每个元素,并对每个元素应用一个函数。
    • Number 是一个函数,可以将字符串转换为数字。例如,Number('10') 会返回 10
    • 因此,['10', '20'].map(Number) 会返回 [10, 20]
  3. let [a, b] = ...

    • 这是一个解构赋值的语法。它将数组中的第一个元素赋值给 a,第二个元素赋值给 b
    • 例如,let [a, b] = [10, 20] 会使 a 等于 10b 等于 20

综上所述,这行代码的作用是从一个包含两个数字的字符串中提取这两个数字,并将它们分别赋值给变量 a 和 b。例如:

let line = "10 20";
let [a, b] = line.split(' ').map(Number);
console.log(a); // 输出: 10
console.log(b); // 输出: 20

A+B(2) 

1. 题目信息

输入描述:

输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 1000)

输出描述:

输出a+b的结果

示例1

输入例子:

2
1 5
10 20

输出例子:

6
30

2. 答案及代码解析

代码解析:
const t = parseInt(await readline()); // 读取数据组数
  • 这行代码首先调用 readline() 函数异步读取一行输入,并等待该异步操作完成。await readline() 返回的是当前行的输入内容,通常是一个字符串。
  • parseInt() 函数将读取到的字符串转换为一个整数,并将其赋值给变量 tt 表示输入数据的组数。
for (let i = 0; i < t; i++) {
  • 这行代码开始一个 for 循环,循环变量 i 从 0 开始,直到 i 小于 t 为止。t 是之前读取到的数据组数。每次循环处理一组数据。
    const line = await readline(); // 读取每一行
  • 这行代码在每次循环中调用 readline() 函数异步读取一行输入,并等待该异步操作完成。await readline() 返回的是当前行的输入内容,并将其赋值给变量 line
    const [a, b] = line.split(" ").map(Number); // 分割为两个数并转换为数字
  • 这行代码将 line 字符串按空格分割成一个数组,然后使用 map(Number) 将数组中的每个元素转换为数字。[a, b] 使用解构赋值语法将数组中的两个数字分别赋值给变量 a 和 b
    console.log(a + b); // 输出其和
  • 这行代码计算 a 和 b 的和,并将结果输出到控制台。
完整代码解析:
const t = parseInt(await readline()); // 读取数据组数
for (let i = 0; i < t; i++) {const line = await readline(); // 读取每一行const [a, b] = line.split(" ").map(Number); // 分割为两个数并转换为数字console.log(a + b); // 输出其和
}
  1. 读取数据组数const t = parseInt(await readline()); 读取第一行输入并解析为整数,表示数据组数。
  2. 循环处理每组数据for (let i = 0; i < t; i++) 开始一个循环,处理 t 组数据。
  3. 读取每一行const line = await readline(); 读取当前行的输入内容。
  4. 分割和转换const [a, b] = line.split(" ").map(Number); 将当前行的输入按空格分割成两个字符串,并将它们转换为数字。
  5. 输出结果console.log(a + b); 计算 a 和 b 的和,并将结果输出到控制台。        

A+B(3) 

1. 题目信息

输入描述:

输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入

输出描述:

输出a+b的结果

示例1

输入例子:

1 5
10 20
0 0

输出例子:

6
30

2. 答案及代码解析

代码解析:
while (true) {
  • while (true): 这是一个无限循环,意味着它的执行将一直持续下去,除非在循环体内遇到 break 语句来终止循环。
const line = await readline();
  • const line = await readline();: 这段代码使用 readline 模块(假设已经导入)来异步读取用户的输入。await 关键字用于等待异步操作的完成,确保在读取完一行输入后才继续执行后续代码。读取到的输入存储在 line 变量中。
const [a, b] = line.split(' ').map(Number);
  • const [a, b] = line.split(' ').map(Number);:
    • line.split(' '): 将读取到的 line 字符串按空格分割成一个数组。例如,如果 line 是 "3 4",那么分割后得到 ["3", "4"]
    • .map(Number): 将分割后的数组中的每个元素转换为数字类型。例如,["3", "4"] 将变为 [3, 4]
    • const [a, b] = ...: 使用解构赋值将数组中的两个元素分别赋值给变量 a 和 b
if (a === 0 && b === 0) {break;
}
  • if (a === 0 && b === 0) { break; }:
    • 这是一个条件判断语句,检查 a 和 b 是否都等于 0。
    • 如果条件成立(即 a 和 b 都等于 0),执行 break 语句,这将立即终止 while 循环。
    • 这个条件通常用于表示输入的结束,即当用户输入 0 0 时,程序将停止运行。
console.log(a + b);
  • console.log(a + b);:
    • 如果上述条件不满足(即 a 和 b 不都等于 0),则执行这行代码。
    • 它将变量 a 和 b 相加,并将结果输出到控制台。

A+B(4) 

1. 题目信息

输入描述:

输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果

示例1

输入例子:

4 1 2 3 4
5 1 2 3 4 5
0

输出例子:

10
15

2. 答案及代码解析

代码解析:
while (true) {
  • 这是一个无限循环,意味着除非通过某种方式跳出循环,否则程序会一直执行循环体中的代码。
    // 读取一行输入const line = await readline();
  • readline() 是一个异步函数,用于从标准输入中读取一行数据。await 关键字确保读取操作完成后再继续执行下一行代码。line 变量将存储读取到的这一行字符串。
    const nums = line.split(' ').map(Number); // 将输入的字符串分割为数组并转换为数字
  • line.split(' ') 将读取到的字符串按照空格分割成一个数组。例如,输入字符串 "1 2 3 4" 会被分割成数组 ["1", "2", "3", "4"]
  • .map(Number) 将数组中的每个字符串元素转换为数字类型。结果是一个包含数字的数组,例如 [1, 2, 3, 4]
    const n = nums[0]; // 获取当前行的第一个数字
  • nums[0] 是数组的第一个元素,这里将其赋值给变量 n,表示当前行的第一个数字。
    if (n === 0) break; // 如果 n 为 0,结束输入
  • 这里进行了一个判断,如果 n 等于 0,则执行 break 语句,跳出 while 循环,结束程序的输入阶段。
    // 计算从 nums[1] 开始的数组之和const sum = nums.slice(1, n + 1).reduce((acc, curr) => acc + curr, 0);
  • nums.slice(1, n + 1) 从数组的第二个元素(索引为 1)开始截取到索引为 n 的元素,包含 n 个元素。例如,如果 n 是 4,则截取 [2, 3, 4, 5](假设数组是 [1, 2, 3, 4, 5])。
  • .reduce((acc, curr) => acc + curr, 0) 对截取的数组进行累加操作,acc 是累加器,curr 是当前元素,初始值为 0。结果是这些数字的总和。
    console.log(sum); // 输出当前组的和
  • 最后,使用 console.log(sum) 输出当前组的数字之和。

A+B(5) 

1. 题目信息

输入描述:

输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果

示例1

输入例子:

2
4 1 2 3 4
5 1 2 3 4 5

输出例子:

10
15

2. 答案及代码解析

代码解析:
// 读取第一行的 t,表示数据组数
const t = parseInt(await readline());
  • 该行注释说明 t 是数据组的数量。
  • readline() 异步读取口输入的第一行数据,使用 await 确保读取完成后继续执行。
  • parseInt() 将读取到的字符串转换为一个整数,t 存储数据组的数量。
// 处理 t 组数据
for (let i = 0; i < t; i++) {
  • 这是一个 for 循环,循环 t 次,每次处理一组数据。其中 i 是循环计数器,表示当前组的索引。
    // 读取每组数据的第一行,第一个整数 n 表示整数的个数const line = (await readline()).trim().split(" ");
  • 该行注释说明将读取每组数据的第一行,其中包含一个整数 n,表示接下来的整数个数。
  • 在这行代码中,readline() 读取当前组的输入行,使用 trim() 去除首尾空格后,使用 split(" ") 将字符串按空格分割成数组。line 变量将存储这个数组,包含一个或多个字符串元素。
    const n = parseInt(line[0]);
  • line[0] 是从数组中提取的第一个元素,代表当前组中整数的个数,将其转换为整数并赋值给变量 n
    // 计算整数的和let sum = 0;
  • 这行注释说明要计算当前组中的整数和。
  • let sum = 0; 初始化一个变量 sum,用于存储整数的总和,初始值设为 0
    for (let j = 1; j <= n; j++) {
  • 这是一个嵌套的 for 循环,从 1 开始到 n(包含 n),j 是循环计数器,用于遍历当前行中表示整数的部分。
        sum += parseInt(line[j]);
  • line[j] 提取当前整数(索引从 1 开始),使用 parseInt() 转换为整数,并累加到 sum 中。
    // 输出求和结果console.log(sum);
  • 最后,使用 console.log(sum) 输出当前组整数的和。

A+B(6) 

1. 题目信息

输入描述:

输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果

示例1

输入例子:

4 1 2 3 4
5 1 2 3 4 5

输出例子:

10
15

2. 答案及代码解析

代码解析:
while (true) {
  • 这是一个无限循环,意味着除非通过某种方式跳出循环,否则程序会一直执行循环体中的代码。
    const input = await readline();
  • readline() 是一个异步函数,用于从标准输入中读取一行数据。await 关键字确保读取操作完成后再继续执行下一行代码。input 变量将存储读取到的这一行字符串。
    if (!input) break; // 输入结束
  • 这里进行了一个判断,如果 input 为空(即没有更多输入),则执行 break 语句,跳出 while 循环,结束程序。
    const parts = input.split(' ').map(Number);
  • input.split(' ') 将读取到的字符串按照空格分割成一个数组。例如,输入字符串 "3 1 2 3" 会被分割成数组 ["3", "1", "2", "3"]
  • .map(Number) 将数组中的每个字符串元素转换为数字类型。结果是一个包含数字的数组,例如 [3, 1, 2, 3]parts 变量存储这个数组。
    const n = parts[0];
  • parts[0] 是数组的第一个元素,表示当前行中整数的个数。将其赋值给变量 n
    const numbers = parts.slice(1);
  • parts.slice(1) 从数组的第二个元素(索引为 1)开始截取到数组的末尾,结果是一个包含 n 个整数的数组。numbers 变量存储这个数组。
    const sum = numbers.reduce((acc, num) => acc + num, 0);
  • numbers.reduce((acc, num) => acc + num, 0) 对 numbers 数组中的元素进行累加操作。acc 是累加器,num 是当前元素,初始值为 0。结果是这些数字的总和。sum 变量存储这个总和。
    console.log(sum);
  • 最后,使用 console.log(sum) 输出当前行中 n 个整数的和。

A+B(7) 

1. 题目信息

输入描述:

输入数据有多组, 每行表示一组输入数据。每行不定有n个整数,空格隔开。(1 <= n <= 100)。

输出描述:

每组数据输出求和的结果

示例1

输入例子:

1 2 3
4 5
0 0 0 0 0

输出例子:

6
9
0

2. 答案及代码解析

代码解析:
let line;
  • 声明一个变量 line,该变量将用于存储每次从输入中读取的行。
while ((line = await readline()) !== undefined) {
  • 这是一个 while 循环,条件是从输入中读取的行 line 不等于 undefined
  • await readline() 是一个异步操作,读取一行输入数据。如果没有更多可读的输入,它将返回 undefined。因此,该条件有效地控制了循环的结束。
  • 将读取到的输入行直接赋值给变量 line
    // 分割输入行,转换为数字并求和const sum = line.split(' ').map(Number).reduce((acc, cur) => acc + cur, 0);
  • 该行注释说明了接下来的操作。
  • line.split(' ') 将读取到的字符串按照空格分割成一个数组。例如,如果输入为 "1 2 3",则结果为 ["1", "2", "3"]
  • .map(Number) 将数组中的字符串元素转换为数字类型,得到一个数字数组。例如,["1", "2", "3"] 会变为 [1, 2, 3]
  • .reduce((acc, cur) => acc + cur, 0) 对转换后的数字数组进行累加操作。这里的 acc 是累加器,cur 是当前元素,初始值为 0。最终,sum 将存储这些数字的总和。
    console.log(sum); // 输出每行的和
  • 使用 console.log(sum) 输出当前行中所有数字的和。注释说明了这一行的意图,即输出求和结果。
总结

这段代码的整体流程是:

  1. 声明一个变量 line 用于存储每行输入。
  2. 在 while 循环中异步读取输入,直到没有更多输入 (undefined)。
  3. 对每行输入进行处理:
    • 将字符串按空格分割为数组。
    • 将数组中的元素转换为数字。
    • 计算这些数字的和,并将结果存储在 sum 中。
  4. 输出每行的和。
     

字符串排序(1)

1. 题目信息

输入描述:

输入有两行,第一行n第二行是n个字符串,字符串之间用空格隔开

输出描述:

输出一行排序后的字符串,空格隔开,无结尾空格

示例1

输入例子:

5
c d a bb e

输出例子:

a bb c d e

2. 答案及代码解析

代码解析:
// 读取第一行输入,获取n
const n = parseInt(await readline());
  • 该行注释说明将从输入中读取第一行数据,并获取整数 n
  • await readline() 异步读取第一行输入数据,使用 parseInt() 将其转换为整数,存储在变量 n 中。
// 读取第二行输入,获取n个字符串
const strings = (await readline()).split(' ');
  • 这行注释说明将从输入中读取第二行数据,并获取 n 个字符串。
  • await readline() 异步读取第二行输入数据。
  • split(' ') 将读取到的字符串按空格分割成一个数组,例如,如果输入是 "apple banana cherry",则结果为 ["apple", "banana", "cherry"]strings 变量存储这个数组。
// 对字符串进行排序
strings.sort();
  • 这行注释说明将对接收到的字符串数组进行排序。
  • strings.sort() 使用默认的字符串排序规则对数组中的字符串进行排序。默认情况下,sort() 会按字典顺序(ASCII 码顺序)对字符串进行排序。
// 输出排序后的字符串,用空格隔开,无结尾空格
console.log(strings.join(' '));
  • 该行注释说明了接下来的操作:输出排序后的字符串,字符串之间用空格隔开,但不包含结尾空格。
  • strings.join(' ') 将排序后的字符串数组用空格连接成一个字符串。例如,如果排序后的数组是 ["apple", "banana", "cherry"],则结果是 "apple banana cherry"
  • console.log(strings.join(' ')) 输出连接后的字符串,符合要求,没有结尾空格。
总结

这段代码的整体流程是:

  1. 读取第一行输入,获取整数 n
  2. 读取第二行输入,获取 n 个字符串,并存储在一个数组中。
  3. 对数组中的字符串进行排序。
  4. 输出排序后的字符串,字符串之间用空格隔开,但不包含结尾空格。  

字符串排序(2)

1. 题目信息

输入描述:

多个测试用例,每个测试用例一行。每行通过空格隔开,有n个字符,n<100

输出描述:

对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开

示例1

输入例子:

a c bb
f dddd
nowcoder

输出例子:

a bb c
dddd f
nowcoder

2. 答案及代码解析

代码解析:
while (true) {
  • 这是一个无限循环,意味着程序会不断重复执行循环体中的代码,直到遇到 break 语句跳出循环。
    const line = await readline();
  • await readline() 是一个异步操作,用于从标准输入中读取一行数据。程序会等待这条输入返回后再继续执行后面的代码。line 变量将存储读取到的这行字符串。
    if (!line) break; // 如果没有输入则退出循环
  • 这里进行判断,如果 line 为空(即没有更多输入,可能是用户按下 Ctrl+D 或者输入结束的情况),则执行 break 语句,跳出循环,结束程序。
    const words = line.split(' ').sort(); // 将输入按空格分割并排序
  • line.split(' ') 将读取到的字符串按空格分割成一个数组。例如,如果输入是 "banana apple cherry",则结果为 ["banana", "apple", "cherry"]
  • .sort() 对分割后的字符串数组进行排序,默认按字母顺序进行排序,结果可能是 ["apple", "banana", "cherry"]。排序后的数组存储在变量 words 中。
    console.log(words.join(' ')); // 输出排序后的字符串
  • words.join(' ') 将排序后的字符串数组用空格连接回一个字符串。例如,数组 ["apple", "banana", "cherry"] 将成为字符串 "apple banana cherry"
  • console.log(words.join(' ')) 输出这个连接后的字符串。

字符串排序(3)

1. 题目信息

输入描述:

多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100

输出描述:

对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格

示例1

输入例子:

a,c,bb
f,dddd
nowcoder

输出例子:

a,bb,c
dddd,f
nowcoder

2. 答案及代码解析

代码解析:
let line;
  • 声明一个变量 line,用于存储每次从输入中读取的行。
while ((line = await readline())) {
  • 这是一个 while 循环,条件是从输入中读取的行 line 不是 undefined 或者空值。
  • await readline() 是一个异步操作,读取一行输入数据,赋值给 line。如果没有更多输入行,它将返回 undefined,循环结束。
    // 将输入行按逗号','分割 let chars = line.split(',');
  • line.split(',') 将读取到的字符串使用逗号分割成一个数组。例如,如果输入是 "banana,apple,cherry",则结果为 ["banana", "apple", "cherry"],并将结果赋给变量 chars
    // 对字符进行排序chars.sort();
  • chars.sort() 对字符串数组进行排序,默认按字典顺序(ASCII 码顺序)进行排序。例如,["banana", "apple", "cherry"] 会被排序为 ["apple", "banana", "cherry"]
    // 将排序后的字符用逗号','连接 let sortedLine = chars.join(',');
  • chars.join(',') 将排序后的字符串数组使用逗号连接成一个新的字符串。例如,排序后的结果 ["apple", "banana", "cherry"] 将变为字符串 "apple,banana,cherry",并赋值给变量 sortedLine
    // 输出排序后的行console.log(sortedLine);
  • console.log(sortedLine) 输出排序后的结果字符串。
总结

这段代码的整体流程是:

  1. 声明一个变量 line 用于存储每行输入。
  2. 在 while 循环中异步读取输入,直到没有更多输入。
  3. 将每行输入字符串按逗号分割为字符数组。
  4. 对字符数组进行排序。
  5. 将排序后的字符数组用逗号连接成字符串,并输出结果。

自测本地通过提交为0

1. 题目信息

输入描述:

输入有多组测试用例,每组空格隔开两个整数

输出描述:

对于每组数据输出一行两个整数的和

示例1

输入例子:

1 1

输出例子:

2

2. 答案及代码解析

代码解析:
for await (const line of iter) {
  • 使用 for await...of 循环,从异步迭代器 iter 中逐行读取数据。这个结构允许在处理每一行输入时异步等待输入完成。
  • const line 用于存储当前读取的行,line 是每次迭代时从 iter 迭代器获取的当前行的值。
    // 分割输入的字符串,得到两个整数const [num1, num2] = line.split(' ').map(Number);
  • 这行注释说明了接下来的操作,即将输入行分割并转换为两个整数。
  • line.split(' ') 将当前行的字符串按空格分割成数组。例如,假设输入为 "3 5",则结果为 ["3", "5"]
  • .map(Number) 将这个字符串数组的每个元素转换为数字类型,结果是 [3, 5]
  • const [num1, num2] 使用数组解构赋值将数组中的两个数分别赋值给 num1 和 num2
    // 计算两个整数的和const sum = num1 + num2;
  • 这行注释说明了下一步操作,即计算两个整数的和。
  • const sum = num1 + num2 将 num1 和 num2 相加,结果存储在 sum 中。
    // 输出结果console.log(sum);
  • 这行注释解释了将要执行的代码,即输出结果。
  • console.log(sum) 输出计算得到的和。
总结

这段代码整体执行流程如下:

  1. 使用 for await...of 循环从异步迭代器 iter 中逐行读取数据。
  2. 对每一行输入,按空格分割并将其转换为两个整数。
  3. 计算这两个整数的和。
  4. 输出计算结果。

相关文章:

OJ在线编程常见输入输出练习【JavaScript】

&#xff08;注&#xff1a;本文是对【JavaScript Node 】 ACM模式&#xff0c;常见输入输出练习相关内容的介绍&#xff01;&#xff01;&#xff01;&#xff09; 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 一、ACM模式下的编辑页面 二、ACM模式下&a…...

新能源汽车空调系统:绿色出行的舒适保障

在新能源汽车迅速发展的今天&#xff0c;空调系统作为提升驾乘舒适度的重要组成部分&#xff0c;发挥着不可或缺的作用。新能源汽车空调系统主要由压缩机、冷凝器、节流装置和蒸发器四大件组成&#xff0c;它们协同工作&#xff0c;为车内提供适宜的温度和湿度环境。 一、压缩…...

Date工具类详细汇总-Date日期相关方法

# 1024程序员节 | 征文 # 目录 简介 Date工具类单元测试 Date工具类 简介 本文章是个人总结实际工作中常用到的Date工具类&#xff0c;主要包含Java-jdk8以下版本的Date相关使用方法&#xff0c;可以方便的在工作中灵活的应用&#xff0c;在个人工作期间频繁使用这些时间的格…...

TMUX1308PWR规格书 数据手册 具有注入电流控制功能的 5V 双向 8:1单通道和 4:1 双通道多路复用器芯片

TMUX1308 和 TMUX1309 为通用互补金属氧化物半导体 (CMOS) 多路复用器 (MUX)。TMUX1308 是 8:1单通道&#xff08;单端&#xff09;多路复用器&#xff0c;而 TMUX1309 是 4:1 双通道&#xff08;差分&#xff09;多路复用器。这些器件可在源极 (Sx) 和漏极 (Dx) 引脚上支持从 …...

证件照怎么换底色?简单又快速!不看后悔

一、引言 证件照在我们的生活中有着广泛的应用&#xff0c;无论是求职、考试还是办理各种证件&#xff0c;都需要用到不同底色的证件照。传统的换底色方法往往比较复杂&#xff0c;需要一定的专业技能和软件操作经验。但是现在&#xff0c;有了更简单快捷的方法&#xff0c;让你…...

Rust 基础语法与常用特性

Rust 跨界&#xff1a;全面掌握跨平台应用开发 第一章&#xff1a;快速上手 Rust 1.2 基础语法与常用特性 1.2.1 数据类型与控制流 数据类型 Rust 提供了丰富的内置数据类型&#xff0c;主要分为标量类型和复合类型。 标量类型 标量类型表示单一的值&#xff0c;Rust 中…...

一、开发环境的搭建

环境搭建步骤&#xff1a; 下载软件安装软件运行软件 其他&#xff1a; Visual studio 安装包文件&#xff1a;https://www.alipan.com/s/nd5RgzD4e3b 下载软件 在浏览器中搜索Visual studio&#xff0c;选择如图的选项 点击该区域&#xff0c;进入该页面&#xff0c;【或…...

Docker:存储原理

Docker&#xff1a;存储原理 镜像联合文件系统overlay镜像存储结构容器存储结构 存储卷绑定挂载存储卷结构 镜像 联合文件系统 联合文件系统Union File System是一种分层&#xff0c;轻量且高效的文件系统。其将整个文件系统分为多个层&#xff0c;层与层之间进行覆盖&#x…...

ts:数组的常用方法(push、pop、shift、unshift、splice、slice)

前端css中filter的使用 一、主要内容说明二、例子&#xff08;一&#xff09;、push方法&#xff08;尾添加&#xff09;1.源码1 &#xff08;push方法&#xff09;2.源码1运行效果 &#xff08;二&#xff09;、pop方法&#xff08;尾删除&#xff09;1.源码2&#xff08;pop方…...

物联网网关确保设备安全

物联网&#xff08;IoT&#xff09;网关在确保设备安全方面扮演着至关重要的角色。 作为连接物联网设备和云端或企业系统的中介&#xff0c;物联网网关可以实施多种安全措施来保护设备和数据。 是物联网网关确保设备安全的关键方法&#xff1a; 1. 设备认证和授权 认证&…...

Vue学习笔记(五)

Class绑定 数据绑定的一个常见需求场景式操纵元素的CSS class列表&#xff0c;因为class是attribute,我们可以和其他attribute一样使用v-bind将它们和动态的字符串绑定。但是&#xff0c;在处理比较复杂的绑定时&#xff0c;通过拼接生成字符串是麻烦且易出错的。因此&#xf…...

Nestjs返回格式小结

在 NestJS 中&#xff0c;除了 text/event-stream&#xff08;用于 Server-Sent Events&#xff09;之外&#xff0c;还有多种格式的返回方式&#xff0c;具体取决于你的应用需求。以下是一些常见的返回格式及其示例&#xff1a; 1. JSON 格式 Get(json) getJsonResponse(Res…...

【力扣刷题实战】相同的树

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a; 相同的树 题目描述 示例 1&#xff1a; 示例 2&#xff1a; 示例 3&#xff1a; 解题思路 题目理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#…...

Golang | Leetcode Golang题解之第515题在每个树行中找最大值

题目&#xff1a; 题解&#xff1a; func largestValues(root *TreeNode) (ans []int) {if root nil {return}q : []*TreeNode{root}for len(q) > 0 {maxVal : math.MinInt32tmp : qq nilfor _, node : range tmp {maxVal max(maxVal, node.Val)if node.Left ! nil {q …...

Zookeeper 对于 Kafka 的作用是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Zookeeper 对于 Kafka 的作用是什么&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; Zookeeper 对于 Kafka 的作用是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 在 Kafka…...

Thread类及线程的核心操作

一. Thread类的常见构造方法 1. Thread() Thread类无参的构造方法, 用于创建Thread类的实例对象. 2. Thread(String name) 带一个参数的Thread类构造方法, 创建一个线程对象, 并给其命名. [注]: 如果不专门给线程命名, 那么线程默认的名字就是Thread-0, Thread-1, Thread-…...

算法|牛客网华为机试11-20C++

牛客网华为机试 上篇&#xff1a;算法|牛客网华为机试1-10C 文章目录 HJ11 数字颠倒HJ12 字符串反转HJ13 句子逆序HJ14 字符串排序HJ15 求int型正整数在内存中存储时1的个数HJ16 购物单HJ17 坐标移动HJ18 识别有效的IP地址和掩码并进行分类统计HJ19 简单错误记录HJ20 密码验证…...

OpenAI低调发布多智能体工具Swarm:让多个智能体协同工作!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…...

性能之光 年度电竞性能旗舰iQOO 13发布

2024年10月30日&#xff0c;被定义为“性能之光”的年度电竞性能旗舰——iQOO 13正式发布&#xff0c;售价3999元起。iQOO 13作为iQOO 品牌在性能上的又一次深入探索&#xff0c;它像是一束光&#xff0c;引领行业不断拉高性能上限&#xff0c;让用户看到更多的可能性。 iQOO …...

如何避免因不熟悉数据保护法规而受损

在当今数字化时代&#xff0c;数据保护法规的遵守对于企业至关重要。不熟悉新的数据保护法规会导致法律风险增加、财务损失、声誉受损、客户信任下降等多方面的负面影响。其中&#xff0c;法律风险增加尤为严重&#xff0c;因为不符合规定可能引发高额罚款和法律诉讼。企业若未…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...