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

网站建设 国家技术规范什么推广平台好

网站建设 国家技术规范,什么推广平台好,江苏建设人才网官网,wordpress 批量 发布文章目录 栈和对列Js 有栈与队列吗20. 有效的括号 - 力扣(LeetCode)思路 1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)思路代码分析array.join() 操作打印const s of str 操作遍历 150. 逆波兰表达式求值 - 力扣&#xf…

文章目录

  • 栈和对列
    • Js 有栈与队列吗
    • 20. 有效的括号 - 力扣(LeetCode)
      • 思路
    • 1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)
      • 思路
      • 代码分析
      • array.join() 操作打印
      • const s of str 操作遍历
    • 150. 逆波兰表达式求值 - 力扣(LeetCode)
      • 思路
      • 代码分析
      • js:isNaN()
      • JavaScript 位运算符 |

栈和对列

Js 有栈与队列吗

[图片]

JavaScript 没有内置的栈和队列数据结构,但可以使用数组来模拟它们。

  1. 栈(Stack)
    栈是一种后进先出(LIFO)的数据结构。可以使用数组来实现栈,使用 push() 方法向栈顶添加元素,使用 pop() 方法弹出栈顶元素。
    push() 方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。而 pop() 方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
    例如:
    [图片]
// 入栈出栈---先进后出
const stack = [];stack.push(1);
stack.push(2);
stack.push(3);console.log(stack.pop()); // 3
console.log(stack.pop()); // 2
console.log(stack.pop()); // 1
  1. 队列(Queue)
    队列是一种先进先出(FIFO)的数据结构。可以使用数组来实现队列,使用 push() 方法向队尾添加元素,使用 shift() 方法弹出队头元素。
    例如:
    [图片]
// 入队出队---先进先出
const queue = [];queue.push(1);
queue.push(2);
queue.push(3);console.log(queue.shift()); // 1
console.log(queue.shift()); // 2
console.log(queue.shift()); // 3

需要注意的是,使用数组实现队列时,使用 shift() 方法弹出队头元素的时间复杂度为 O(n),因为需要将数组中所有元素向前移动一位。如果需要高效地实现队列,可以使用双端队列(deque)或循环队列(circular queue)。unshift()方法是向数组的开头添加一个或多个元素,并且返回新的长度。

20. 有效的括号 - 力扣(LeetCode)

思路

在这里插入图片描述

代码分析

/** @lc app=leetcode.cn id=20 lang=javascript** [20] 有效的括号*/// @lc code=start
/*** @param {string} s* @return {boolean}*/
var isValid = function(s) {
/* 如果是左括号,就把相应的右括号,push压入栈如果是右括号,就弹出当前栈的末尾元素pop,如果匹配,继续上述操作,不匹配返回false当遍历完所有的字符,栈里面位空,则返回true*//*** eg  ([(){}])* 技巧:我们匹配左括号的时候,可以让右括号入栈,这样就只需要比较当前元素和栈顶元素是否相等*/// 1 建一个栈 数组const stack = []// 2 遍历字符串for(let i = 0; i < s.length; i++) {// 判断当前的括号是否是左括号,是左括号,入栈(push()),最后入的就是栈顶元素switch (s[i]) {case '(':stack.push(')')break;case '[':stack.push(']')break;case '{':stack.push('}')break;default:// 右括号,如果跟栈顶元素(pop())不相等,falseif(s[i] !== stack.pop())return false}}// 当元素遍历完了,栈为空,那么返回truereturn stack.length === 0
};
// @lc code=end

1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)

思路

在这里插入图片描述

代码分析

/** @lc app=leetcode.cn id=1047 lang=javascript** [1047] 删除字符串中的所有相邻重复项*/// @lc code=start
/*** @param {string} s* @return {string}*/
var removeDuplicates = function(s) {/*** 删除相邻相同的字符,重复删除直至无法删除(入栈出栈)*/// 1 创建栈const stack = []// 2 遍历字符串for(const x of s) {// 使用c记录弹出的元素是否与当前遍历元素一样,不一样需要把c压回栈中let c = null// 3 栈不为空,且当前的字符 === 弹出的字符 跳出循环继续遍历if(stack.length && x === (c = stack.pop())) continue// 4 当前字符和弹出字符不一致时,且c存在(栈空的时候不存在),我们把c继续压入栈中,继续进行匹配c && stack.push(c)// 5 如果弹出字符没有与当前字符x相等,则把当前的x压入栈stack.push(x)}// 6 返回当前栈 且去掉分隔符return stack.join("")
};
// @lc code=end

array.join() 操作打印

[图片]
[图片]

const s of str 操作遍历

[图片]

150. 逆波兰表达式求值 - 力扣(LeetCode)

思路

在这里插入图片描述

代码分析

/** @lc app=leetcode.cn id=150 lang=javascript** [150] 逆波兰表达式求值*/// @lc code=start
/*** @param {string[]} tokens* @return {number}*/
var evalRPN = function(tokens) {/*** 逆波兰:后序遍历,我们需要得到正常的表达式(中序遍历,左根右)来计算* 思路:遇到数字,入栈,遇到符号,我们就弹出两个数字n2,n1,进行计算,再把结果压入栈,之后继续判断是否遇到数字还是符号*/// 1 创建栈const stack = []// 2 遍历字符串for(const token of tokens) {// 3 如果是数字(需要把字符串强制转成数字类型),压入栈if(!isNaN(Number(token))) {stack.push(Number(token))}else {// 4 不是数字,弹出两个数字,判断符号,再进行运算,结果压入栈,继续判断是否是数字const n2 = stack.pop()const n1 = stack.pop()switch (token) {case '+':stack.push(n1 + n2)break;case '-':stack.push(n1 - n2)break;case '*':stack.push(n1 * n2)breakcase '/':// 取整操作 | 0 保留整数部分// stack.push(n1 / n2 | 0)stack.push(parseInt(n1/n2))breakdefault:break;}}}// 5 直到最后计算完全部,压入的最后一个值,就是最终结果return stack[0]};
// @lc code=end

js:isNaN()

JavaScript isNaN() 函数
isNaN()是JavaScript中的一个函数,用于检查一个值是否是非数字NaN(Not a Number)。
语法:
isNaN(value)
参数:
value:需要检查的值。
返回值:
如果value是NaN,返回true;否则返回false。
示例:

isNaN(123) // false
isNaN('123') // false
isNaN('hello') // true
isNaN('') // false
isNaN(null) // false
isNaN(undefined) // true
isNaN(NaN) // true

注意:如果参数不是数值类型,isNaN()会尝试将其转换为数值类型,如果无法转换,则返回true。例如,字符串'hello'无法转换为数值类型,所以isNaN('hello')返回true。

JavaScript 位运算符 |

JavaScript 运算符 | 菜鸟教程
JavaScript 取整函数_js 取整_不见舟的博客-CSDN博客
javascript位运算技巧(有点错误可在控制台检测)
[图片]

http://www.khdw.cn/news/25948.html

相关文章:

  • 邢台做网站推广抚顺网络推广
  • html5 音乐网站成人短期技能培训
  • 哈尔滨做网站找哪家好临沂做网站建设公司
  • 网站mip怎么做青岛网站关键词优化公司
  • 江门网站建设项目营销推广方案
  • 新手做网站推荐如何在网上推广自己的产品
  • 连衣裙一起做网站商丘网络推广哪家好
  • 企业网站推广的收获与启示百度一下你就知道下载安装
  • 怎样申请建立自助网站做了5天游戏推广被抓了
  • 做企业网站后期还需要费用吗俄罗斯搜索引擎入口
  • 音乐网站的音乐列表如何做青岛seo排名扣费
  • 个人网站如何做淘宝客今日油价92汽油
  • 云南技术支持热搜科技上海seo顾问
  • 互联网软件百度优化教程
  • 提供网站制作公司哪家好长沙做网站推广
  • dw班级网站建设seo网络推广知识
  • 做网站的工作怎么样搜索引擎广告推广
  • 做网站的工作量成人职业技能培训学校
  • 大学生做外包项目的网站小说推广平台有哪些
  • 桂林两江四湖夜景图片惠州seo排名收费
  • 网站建设 关于我们三只松鼠搜索引擎推广
  • 美国自建网站网站技术解决方案
  • 网页模板网站生成活动推广方案怎么写
  • 合肥新站开发区管委会网站广州seo培训
  • 百度做的网站直通车优化推广
  • 河北网站备案查询系统网络营销战略的内容
  • 深圳福田专业网站建设账号权重查询入口站长工具
  • 旅游网站设计思路精准信息300099
  • 十堰h5网站建设友情链接平台广告
  • 手机网站生成代码郴州seo外包