javascript代码优化

1.取整运算符(~~):这是JavaScript中的一种取整方式,它会将一个数值向下取整到最接近的整数。在这个表达式中,使用两次取整运算符可能是为了将小数部分去除,得到一个整数结果。

2. const symbolValues = new Map();
    symbolValues.set('I', 1);
    symbolValues.set('V', 5);
    symbolValues.set('X', 10);
    symbolValues.set('L', 50);
    symbolValues.set('C', 100);
    symbolValues.set('D', 500);
    symbolValues.set('M', 1000);  

这段代码创建了一个名为symbolValues的Map对象,并将罗马数字的符号和对应的数值存储在其中。具体来说,'I’对应的值是1,'V’对应的值是5,'X’对应的值是10,'L’对应的值是50,'C’对应的值是100,'D’对应的值是500,'M’对应的值是1000。

3.const pairs = new Map([ [')', '('], [']', '['], ['}', '{'] ]);

const pairs是一个Map对象,它用于存储一组括号的对应关系。每个键值对表示一个右括号和对应的左括号。具体来说,它包含了以下几个键值对:

[‘)’, ‘(’]:表示右括号’)‘对应的左括号是’('。

[‘]’, ‘[’]:表示右括号’]‘对应的左括号是’['。

[‘}’, ‘{’]:表示右括号’}‘对应的左括号是’{'。

这个Map对象可以用于检查给定的右括号是否与其对应的左括号匹配。例如,如果我们有一个右括号’)‘,我们可以通过pairs.get(’)‘)来获取对应的左括号’(',然后进行匹配操作。

4.let ch of s

“let ch of s” 是 JavaScript 中的一种语法,用于遍历字符串或数组中的元素。其中,“ch” 是一个变量名,用于表示当前遍历到的元素,“s” 是一个字符串或数组。

当遍历字符串时,可以使用以下方式:

 

Javascript

let s = "Hello"; for (let ch of s) { console.log(ch); }

输出结果为:

 

H e l l o

当遍历数组时,可以使用以下方式:

 

Javascript

let arr = [1, 2, 3, 4, 5]; for (let num of arr) { console.log(num); }

输出结果为:

 

1 2 3 4 5

5.接4:for (let ch of s){

if (pairs.has(ch)) {

if (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {

return false;

}

stk.pop();

}

else {

stk.push(ch);

}

};

这段代码是一个用于检查字符串中括号匹配的函数。它使用了一个栈来实现匹配的逻辑。具体的实现步骤如下:

1. 遍历字符串s中的每个字符ch。
2. 如果ch是左括号,则将其压入栈stk中。
3. 如果ch是右括号,则判断栈stk是否为空,或者栈顶元素与ch对应的左括号不匹配,则返回false,表示括号不匹配。
4. 如果ch是右括号,并且栈顶元素与ch对应的左括号匹配,则将栈顶元素弹出。
5. 遍历完字符串s后,如果栈stk为空,则表示所有括号都匹配,返回true;否则,返回false。

这段代码的作用是判断一个字符串中的括号是否匹配。如果匹配,返回true;如果不匹配,返回false。

6.合并两个链表可以用

(1)递归:

递归是一种在函数内部调用自身的编程技巧。递归通常在以下情况下使用:

解决可以被分解为相同问题的子问题的情况。

解决问题的过程可以通过不断缩小问题规模来实现。

var mergeTwoLists = function(l1, l2) {
    if (l1 === null) {
        return l2;
    } else if (l2 === null) {
        return l1;
    } else if (l1.val < l2.val) {
        l1.next = mergeTwoLists(l1.next, l2);
        return l1;
    } else {
        l2.next = mergeTwoLists(l1, l2.next);
        return l2;
    }
};

(2)迭代

迭代是一种重复执行某个操作的方法,可以在满足特定条件的情况下使用。

var mergeTwoLists = function(l1, l2) {
    const prehead = new ListNode(-1);

    let prev = prehead;
    while (l1 != null && l2 != null) {
        if (l1.val <= l2.val) {
            prev.next = l1;
            l1 = l1.next;
        } else {
            prev.next = l2;
            l2 = l2.next;
        }
        prev = prev.next;
    }

    // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
    prev.next = l1 === null ? l2 : l1;

    return prehead.next;
};---代码出自leetcode官方

  • 22
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值