第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第三天 棧

標(biāo)簽:
算法

第一模块:课程介绍

课程名称:JavaScript版数据结构与算法 轻松解决前端算法面试
课程章节:3-1 栈简介
主讲老师:lewis

第二模块:课程内容

知道什么是栈,学会对栈的基本操作。

第三模块:课程收获

1. 栈是什么?

一个后进先出的数据结构

图片描述

因为在js里面没有栈这个东西,但是我们可以用数组来进行表示。

示例代码

const stack = [];
// 入栈
stack.push(1);
stack.push(2);
// 出栈,移除数组的最后一项并返回它
const item1 = stack.pop();
const item2 = stack.pop();

上面的代码就提现了栈的后进先出的特性

2. 什么场景下使用栈

所有需要后进先出的几个问题

十进制转二进制

如果要把十进制的数字转成二进制的话,就需要不停的除以2,得到余数,最后把所有的余数都收集起来,得到二进制的数据

这个余数的排序也是有要求的,后出来的余数要排在前面。

也就是先进后出的特点。

判断字符串的括号是否有效

(((()))) --- valid
()()()  --- valid
((()    --- invalid

看上面的这个问题,可以假设我们有个左括号的栈,每进去一个左括号,就要有一个对应的右括号,这样,我们在数的时候,可以假设把左括号都堆起来,然后呢,当有一个右括号的时候,就删除一个左括号,就完成了判断了

解题步骤

  • 新建一个栈
  • 扫描字符串,遇到左括号入栈,遇到和栈顶括号类型匹配的右括号就出栈,类型不匹配直接判定位不合法
  • 最后栈空了就合法,否则不合法。

示例代码:

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    // 定义下符号
    const fuhao1 = ['(', '[', '{'];
    const fuhao2 = [')', ']', '}'];
    const zhan1 = [];
    if(fuhao2.includes(s[0])){
        return false;
    }
    for (let i = 0; i < s.length; i++) {
        // 遇到左括号,入栈
        if(fuhao1.includes(s[i])){
            zhan1.push(s[i]);
        }else {
            // 遇到右括号,判断右括号是否对应左括号
            if(fuhao1.indexOf(zhan1[zhan1.length - 1]) !== fuhao2.indexOf(s[i])){
                // 两个不一样,就返回false
                return false;
            }else {
                zhan1.pop();
            }
        }
    }
    return zhan1.length === 0;
};

优化方向

  1. 字符串的长度如果是奇数,就肯定是失败的了
if(s % 2 === 1) return false;

总结

新建的变量会增加空间复杂度,也就是说zhan1会使用n个内存地址,也就是o(n)。我们的for循环带来了时间的复杂度o(n)

结果记录:

图片描述

后续可以用到字典来进行优化

第四模块:课程记录

图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消