网站文案标准格式服务器安全
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:23
当前位置: 首页 > news >正文
网站文案标准格式,服务器安全,厦门专业做网站,深圳市住房和城乡建设局网站1502.判断是否能形成等差数列 题目 给你一个数字数组 arr 。 如果一个数列中#xff0c;任意相邻两项的差总等于同一个常数#xff0c;那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列#xff0c;请返回 true #xff1b;否则#xff0c;返回 false…1502.判断是否能形成等差数列 题目 给你一个数字数组 arr 。 如果一个数列中任意相邻两项的差总等于同一个常数那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列请返回 true 否则返回 false 。 示例 1 输入arr [3,5,1] 输出true 解释对数组重新排序得到 [1,3,5] 或者 [5,3,1] 任意相邻两项的差分别为 2 或 -2 可以形成等差数列。示例 2 输入arr [1,2,4] 输出false 解释无法通过重新排序得到等差数列。提示 2 arr.length 1000-10^6 arr[i] 10^6 解题思路 只要对数组先进行排序在比较每个相邻元素对差值是否相等就可以了。但是要注意使用sort函数数组元素将按照转换为字符串的Unicode位点进行排序。不对。 sort()方法 相关知识点 在JavaScript中Array.prototype.sort() 方法用于对数组的元素进行排序并返回排序后的数组。这个方法会改变原数组。以下是sort()函数的基本用法和一些高级用法 基本用法 array.sort([compareFunction])array需要排序的数组。compareFunction可选用来指定按某种顺序排列的函数。如果省略数组元素将按照转换为字符串的各个字符的Unicode位点进行排序。 不带比较函数的用法重点注意 如果不传递比较函数数组元素将按照转换为字符串的Unicode位点进行排序这可能导致以下非预期的排序结果 let numbers [20, 3, 5, 1, 2]; numbers.sort(); console.log(numbers); // 输出可能是 [1, 20, 2, 3, 5]在上面的例子中数字被转换成字符串然后按照字符串的Unicode位点排序所以20排在2前面。 带比较函数的用法 为了正确地排序数字你应该提供一个比较函数。比较函数应该接受两个参数通常称为a和b并且根据返回值来排序 如果返回值小于0那么a会被排列到b前面。如果返回值等于0a和b的顺序不变。如果返回值大于0b会被排列到a前面。 以下是一个升序排序数字数组的例子 let numbers [20, 3, 5, 1, 2]; numbers.sort(function(a, b) {return a - b; }); console.log(numbers); // 输出 [1, 2, 3, 5, 20]或者使用ES6的箭头函数 let numbers [20, 3, 5, 1, 2]; numbers.sort((a, b) a - b); console.log(numbers); // 输出 [1, 2, 3, 5, 20]高级用法 你可以使用比较函数来根据不同的标准排序对象数组。例如以下代码根据对象的age属性进行升序排序 let people [{ name: Alice, age: 40 },{ name: Bob, age: 30 },{ name: Carol, age: 50 } ];people.sort((a, b) a.age - b.age); console.log(people);注意事项 sort()方法在原数组上进行排序不创建新数组。如果比较函数没有返回值或者返回的是NaN则元素的位置可能会不确定。在旧版浏览器中sort()方法的实现可能不是稳定的这意味着相等的元素可能不会保持它们原始的顺序。然而从ECMAScript 2019ES10开始所有主流JavaScript引擎的sort()实现都是稳定的。 使用sort()方法时请确保理解它的行为并根据需要提供适当的比较函数。 代码实现 /*** param {number[]} arr* return {boolean}*/ var canMakeArithmeticProgression function(arr) {arr.sort((a, b) a - b); // 按照数值大小进行排序var darr[1]-arr[0]for(let i1;iarr.length-1;i){if(arr[i1]-arr[i]!d){return false}}return true }; 682.棒球比赛 题目 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成过去几回合的得分可能会影响以后几回合的得分。 比赛开始时记录是空白的。你会得到一个记录操作的字符串列表 ops其中 ops[i] 是你需要记录的第 i 项操作ops 遵循下述规则 整数 x - 表示本回合新获得分数 x - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。D - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。C - 表示前一次得分无效将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。 请你返回记录中所有得分的总和。 示例 1 输入ops [5,2,C,D,] 输出30 解释 5 - 记录加 5 记录现在是 [5] 2 - 记录加 2 记录现在是 [5, 2] C - 使前一次得分的记录无效并将其移除记录现在是 [5]. D - 记录加 2 * 5 10 记录现在是 [5, 10].- 记录加 5 10 15 记录现在是 [5, 10, 15]. 所有得分的总和 5 10 15 30示例 2 输入ops [5,-2,4,C,D,9,,] 输出27 解释 5 - 记录加 5 记录现在是 [5] -2 - 记录加 -2 记录现在是 [5, -2] 4 - 记录加 4 记录现在是 [5, -2, 4] C - 使前一次得分的记录无效并将其移除记录现在是 [5, -2] D - 记录加 2 * -2 -4 记录现在是 [5, -2, -4] 9 - 记录加 9 记录现在是 [5, -2, -4, 9]- 记录加 -4 9 5 记录现在是 [5, -2, -4, 9, 5]- 记录加 9 5 14 记录现在是 [5, -2, -4, 9, 5, 14] 所有得分的总和 5 -2 -4 9 5 14 27示例 3 输入ops [1] 输出1提示 1 ops.length 1000ops[i] 为 C、D、或者一个表示整数的字符串。整数范围是 [-3 * 104, 3 * 104]对于 操作题目数据保证记录此操作时前面总是存在两个有效的分数对于 C 和 D 操作题目数据保证记录此操作时前面总是存在一个有效的分数 解题思路 使用栈去操作。在JavaScript中数组可以很方便地模拟栈的行为使用 push() 方法来添加元素到栈顶使用 pop() 方法来移除栈顶元素。 相关知识点 1.栈Stack 栈是一种后进先出Last In, First OutLIFO的数据结构。以下是如何使用数组来模拟栈的操作 基本操作 push(element)将元素添加到栈顶。pop()移除栈顶元素并返回被移除的元素。peek() 或 top()返回栈顶元素但不移除它。isEmpty()检查栈是否为空。size()返回栈中的元素数量。 示例代码 let stack []; // 使用数组来模拟栈// 入栈 stack.push(1); stack.push(2); stack.push(3);// 出栈 console.log(stack.pop()); // 输出 3// 查看栈顶元素 console.log(stack[stack.length - 1]); // 输出 2// 检查栈是否为空 console.log(stack.isEmpty()); // 输出 false// 获取栈的大小 console.log(stack.length); // 输出 22.队列Queue 队列是一种先进先出First In, First OutFIFO的数据结构。以下是如何使用数组来模拟队列的操作 基本操作 enqueue(element)在队列的末尾添加一个新元素。dequeue()移除队列的第一个元素并返回被移除的元素。front()返回队列的第一个元素但不移除它。isEmpty()检查队列是否为空。size()返回队列中的元素数量。 示例代码 let queue []; // 使用数组来模拟队列// 入队 queue.push(1); queue.push(2); queue.push(3);// 出队 console.log(queue.shift()); // 输出 1// 查看队列的第一个元素 console.log(queue[0]); // 输出 2// 检查队列是否为空 console.log(queue.length 0); // 输出 false// 获取队列的大小 console.log(queue.length); // 输出 2请注意虽然使用数组的 push() 和 shift() 方法可以模拟队列但 shift() 操作的时间复杂度是 O(n)因为它需要移动所有其他元素。在实际应用中为了提高性能可以使用 Object 或者 Map 来实现队列这样入队和出队操作都可以在 O(1) 时间内完成。 在ES6中还可以使用 class 关键字来创建更正式的栈和队列类为它们提供更清晰的方法和属性。 总之栈和队列在js中其实可以合二为一取最前面的元素就是用shift最后一个就是pop。 3.reduce函数 reduce 函数是 JavaScript 数组的一个高阶函数它对数组中的每个元素执行一个由你提供的“reducer”回调函数升序执行将其结果汇总为单个返回值。 array.reduce(function(accumulator, currentValue, currentIndex, array) {// … 执行操作 … }, initialValue);function(accumulator, currentValue, currentIndex, array)对于每个元素执行的回调函数。 accumulator累加器累加回调的返回值; 它是上一次调用回调时返回的值或者是提供的初始值见下文。currentValue数组中正在处理的当前元素。currentIndex可选数组中正在处理的当前元素的索引。如果提供了 initialValue则起始索引为 0否则为 1。array可选调用 reduce 的数组。 initialValue可选作为第一次调用回调函数时的第一个参数的值。如果没有提供初始值则将使用数组中的第一个元素并且 currentIndex 从 1 开始。 以下是一个使用 reduce 来计算数组中所有数字总和的例子 const numbers [1, 2, 3, 4, 5];const sum numbers.reduce((accumulator, currentValue) {return accumulator currentValue; }, 0); // 初始值为 0console.log(sum); // 输出 15在这个例子中reduce 函数遍历 numbers 数组将每个元素加到累加器上最终返回总和。 如果没有提供 initialValuereduce 将使用数组的第一个元素作为累加器的初始值并从第二个元素开始遍历数组。 下面是一个没有提供初始值的例子 const numbers [1, 2, 3, 4, 5];const sum numbers.reduce((accumulator, currentValue) {return accumulator currentValue; });console.log(sum); // 输出 15在这个例子中reduce 从数组的第一个元素1开始作为累加器的初始值然后从第二个元素2开始遍历数组。 reduce 函数非常强大可以用于执行各种复杂的操作比如将数组扁平化、计算对象数组的属性总和、按属性分组对象等。 代码实现 function calPoints(operations) {let stack []; // 使用数组作为栈operations.forEach(op {if (op C) {// C 操作移除栈顶元素stack.pop();} else if (op D) {// D 操作将栈顶元素加倍并将结果压入栈stack.push(stack[stack.length - 1] * 2);} else if (op ) {// 操作将栈顶的两个元素相加并将结果压入栈stack.push(stack[stack.length - 1] stack[stack.length - 2]);} else {// 数字操作将字符串转换为数字并压入栈stack.push(parseInt(op));}});// 计算栈中所有得分的总和return stack.reduce((sum, score) sum score, 0); }657.机器人能否返回原点 题目 在二维平面上有一个机器人从原点 (0, 0) 开始。给出它的移动顺序判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R右L左U上和 D下。 如果机器人在完成所有动作后返回原点则返回 true。否则返回 false。 注意机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次“L” 将始终向左移动等。此外假设每次移动机器人的移动幅度相同。 示例 1: 输入: moves UD 输出: true 解释机器人向上移动一次然后向下移动一次。所有动作都具有相同的幅度因此它最终回到它开始的原点。因此我们返回 true。 示例 2: 输入: moves LL 输出: false 解释机器人向左移动两次。它最终位于原点的左侧距原点有两次 “移动” 的距离。我们返回 false因为它在移动结束时没有返回原点。 提示: 1 moves.length 2 * 104moves 只包含字符 U, D, L 和 R 代码实现 /*** param {string} moves* return {boolean}*/ var judgeCircle function(moves) {var lengthmoves.length;//如果字符串是奇数必不可能回到原点。if(length%21) return false;//是偶数的时候 只要RL的个数相等和UD个数相等即可。var udCount0;var rlCount0;for(let i0;ilength;i){if(moves[i]U)udCount;if(moves[i]D)udCount–;if(moves[i]R)rlCount;if(moves[i]L)rlCount–;}if(udCount0 rlCount0) return true;return false; };
- 上一篇: 网站未被百度中收录的原因顺德大良网站建设
- 下一篇: 网站文案标准格式优化大师有用吗
相关文章
-
网站未被百度中收录的原因顺德大良网站建设
网站未被百度中收录的原因顺德大良网站建设
- 技术栈
- 2026年03月21日
-
网站未备案什么意思我想自己建个网站买货 怎么做
网站未备案什么意思我想自己建个网站买货 怎么做
- 技术栈
- 2026年03月21日
-
网站为什么要ipc备案dedecms双语网站
网站为什么要ipc备案dedecms双语网站
- 技术栈
- 2026年03月21日
-
网站文案标准格式优化大师有用吗
网站文案标准格式优化大师有用吗
- 技术栈
- 2026年03月21日
-
网站文件夹权限设置seo分析报告怎么写
网站文件夹权限设置seo分析报告怎么写
- 技术栈
- 2026年03月21日
-
网站文件结构物联网卡在哪里买呢
网站文件结构物联网卡在哪里买呢
- 技术栈
- 2026年03月21日
