亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第1天 數據結構之“棧”

標簽:
JavaScript

课程名称:JavaScript版数据结构与算法
课程章节:第3章 数据结构之“栈”
主讲老师:lewis

课程内容:

今天学习的内容包括:
3-1 栈简介——可以用Array实现栈,后进先出规则。
3-2 什么场景下用栈——后进先出场景,比如十进制转二进制、判断字符串的括号是否有效、函数调用堆栈等。
3-3 LeetCode:20.有效的括号——使用栈特性实现判断 “括号” 字符串是否有效。

课程收获:

如何使用Array实现一个栈的入栈出栈呢?

const stack = [];  
  
stack.push(1); // 入栈  
stack.push(2); // 入栈  
  
const item1 = stack.pop(); // 出栈 2先出  
const item2 = stack.pop(); // 出栈 1再出  

有效的括号:

有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。

使用栈的后进先出正好可以判断是否有效:
1.新建一个栈。
2.扫描字符串,遇左括号入栈,遇到和栈顶括号类型匹配的右括号就出栈,类型不匹配直接判定为不合法。
3.最后栈空了就合法,否则不合法。

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    if(s.length%2===1) return false
    const stack = []
    for(let i =0;i<s.length;i++){
        const c = s[i]
        if(c === '(' || c === '{' || c === '['){
            stack.push(c)
        }else{
            const t = stack[stack.length-1]
            if(
                (t==='(' && c === ')') ||
                (t==='{' && c === '}') ||
                (t==='[' && c === ']')
            ){
                stack.pop()
            }else{
                return false
            }
        }
    }
    return stack.length === 0
};

执行用时: 56 ms , 在所有 JavaScript 提交中击败了 91.74% 的用户
内存消耗: 42 MB , 在所有 JavaScript 提交中击败了 18.03% 的用户

还有很大的提升空间,感受到了算法的魅力,还需继续学习算法,以便后续写出优质的代码。

学习需要坚持,昨天就忘记打卡了,今天重新来过😭 ~

坚持打卡,坚持学习!明天见💪~

https://img3.sycdn.imooc.com/62ea7fed0001494919200892.jpg

https://img1.sycdn.imooc.com/62ea80910001a5a219200892.jpg

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

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

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消