网站建设费归入长期待摊费用,新建网站多少钱,免费设计签名在线生成,室内装饰设计图集儿童节了也要好好学习鸭。 先来回顾一下上期的问题及答案#xff1a; 「反转链表」#xff08;Reverse Linked List#xff09;。 题目描述#xff1a; 反转一个单链表。 以下是对应的JavaScript实现#xff1a; function reverseList(head) {let prev null;let curr he… 儿童节了也要好好学习鸭。 先来回顾一下上期的问题及答案 「反转链表」Reverse Linked List。 题目描述 反转一个单链表。 以下是对应的JavaScript实现 function reverseList(head) {let prev null;let curr head;while (curr ! null) {let nextTemp curr.next;curr.next prev;prev curr;curr nextTemp;}return prev;
} 解题思路 使用迭代的方法反转链表。初始化两个指针 prev 和 curr分别指向前一个节点和当前节点。在迭代过程中用一个临时变量 nextTemp 保存当前节点的下一个节点。将当前节点的指针指向前一个节点然后更新 prev 和 curr 的位置。最终返回反转后的链表的头节点。 时间复杂度分析 迭代过程中需要遍历整个链表一次时间复杂度为 O(n)其中 n 是链表的长度。 空间复杂度分析 只使用了常量级别的额外空间所以空间复杂度为 O(1)。 例如 function ListNode(val, next) {this.val val;this.next next;
}const head new ListNode(1);
head.next new ListNode(2);
head.next.next new ListNode(3);
head.next.next.next new ListNode(4);
head.next.next.next.next new ListNode(5);const reversedList reverseList(head);
console.log(reversedList); // { val: 5, next: { val: 4, next: { val: 3, next: { val: 2, next: { val: 1, next: null } } } } } 在上述例子中给定一个链表 1-2-3-4-5通过调用 reverseList 函数将链表进行反转。最终得到的反转后链表为 5-4-3-2-1。 2023年6月2日 「有效的括号」Valid Parentheses。 题目描述 给定一个只包含字符 (, ), {, }, [ 和 ] 的字符串 s判断字符串是否有效。 有效字符串需满足 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 提示如下 使用栈来匹配括号。遍历字符串如果当前字符是左括号(, [, {则将其入栈。如果当前字符是右括号), ], }则从栈顶取出一个字符如果它与当前字符匹配则继续遍历否则返回 false。最后检查栈是否为空如果为空则表示所有括号都匹配成功返回 true否则返回 false。 要求的结果 console.log(isValid(())); // true
console.log(isValid(()[]{})); // true
console.log(isValid((])); // false
console.log(isValid(([)])); // false
console.log(isValid({[]})); // true 在上述例子中给定字符串分别为 ()、()[]{}、(]、([)] 和 {[]}。通过调用 isValid 函数判断字符串是否有效。有效的字符串返回 true无效的字符串返回 false。 上面问题的答案会在第二天的公众号推文中公布大家可以关注公众号程序员每日三问第一时间获得推送内容。 学习不打烊充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题死磕自己愉悦大家 希望大家在这浮夸的程序员圈里保持冷静每天坚持花20分钟来学习与思考在千变万化类库层出不穷的今天不要等到找工作时才狂刷题提倡每日学习。