部分力扣题记

 1.. - 力扣(LeetCode)

这题用到了map和栈的知识点

我们利用map的特性,将()【】{},分别一一对应

然后遍历,如果map(char)为真,就意味着是左边的部分(【{,将其入栈
然后如果map(char)不为真,意味着是右边的部分)】},我们就进行判断,如果map(char)=现在栈顶的元素stack.pop(),就返回真,不然报错

/*** @param {string} s* @return {boolean}*/
var isValid = function(s) {const stack=[];const map={'(':')','[':']','{':'}'};for(let i=0;i<s.length;i++){const char=s[i];if(map[char]){stack.push(char);}else{const top=stack.pop();if(map[top]!=char){return false}}}return stack.length===0;
};
const s='()[]{}'
console.log(isValid(s))

2.. - 力扣(LeetCode)

二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为“左子节点”和“右子节点”。

前序遍历是一种遍历二叉树的方式,其顺序如下:

  1. 访问根节点。
  2. 前序遍历左子树。
  3. 前序遍历右子树。

 这个题首先你得手动构建一下二叉树结构,然后写一个方法将数组变为二叉树结构

最后用入栈和出栈实现

var TreeNode = /** @class */ (function () {function TreeNode(val, left, right) {if (val === void 0) { val = 0; }if (left === void 0) { left = null; }if (right === void 0) { right = null; }this.val = val;this.left = left;this.right = right;}return TreeNode;
}());
var buildTree = function (arr, index) {if (index === void 0) { index = 0; }if (index >= arr.length || arr[index] === null) {return null;}var node = new TreeNode(arr[index]);node.left = buildTree(arr, 2 * index + 1);node.right = buildTree(arr, 2 * index + 2);return node;
};
var preorderTraversal = function (root) {var res = [];if (!root)return res;var stack = [root];while (stack.length !== 0) {var node = stack.pop();if (node) {res.push(node.val);if (node.right) {stack.push(node.right);}if (node.left) {stack.push(node.left);}}}return res;
};
var rootArray = [1, null, 2, 3];
var root = buildTree(rootArray);
console.log(preorderTraversal(root)); // 输出: [1, 2, 3]

3.. - 力扣(LeetCode)

这个题很简单

  • this.queue.push(t):将当前请求的时间戳 t 添加到队列 queue 中。
  • while (this.queue[0] < t - 3000):当队列中最早的请求时间小于当前时间 t 减去 3000 毫秒时,将其从队列中移除。这一步保证了队列中只保留最近 3000 毫秒内的请求。
var RecentCounter = function() {this.queue = [];
};RecentCounter.prototype.ping = function(t) {this.queue.push(t);while (this.queue[0] < t - 3000) {this.queue.shift();}return this.queue.length;
};

 4.. - 力扣(LeetCode)

 

例如,给定链表 4→5→1→9,要被删除的节点是 5,即链表中的第 2 个节点。可以通过如下两步操作实现删除节点的操作。

将第 2 个节点的值修改为第 3 个节点的值,即将节点 5 的值修改为 1,此时链表如下:
4→1→1→9
删除第 3 个节点,此时链表如下:
4→1→9

var deleteNode = function(node) {node.val = node.next.val;node.next = node.next.next;
};

5.. - 力扣(LeetCode)

在遍历链表时,将当前节点的 next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。

var reverseList = function(head) {let prev = null;let curr = head;while (curr) {const next = curr.next;curr.next = prev;prev = curr;curr = next;}return prev;
};

6.. - 力扣(LeetCode)

这里要考虑是进位值

由于输入的两个链表都是逆序存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。

我们同时遍历两个链表,逐位计算它们的和,并与当前位置的进位值相加。具体而言,如果当前两个链表处相应位置的数字为 n1,n2,进位值为 carry,则它们的和为 n1+n2+carry;其中,答案链表处相应位置的数字为 (n1+n2+carry)mod10,而新的进位值为 ⌊ 
10
n1+n2+carry

如果两个链表的长度不同,则可以认为长度短的链表的后面有若干个 0 。

此外,如果链表遍历结束后,有 carry>0,还需要在答案链表的后面附加一个节点,节点的值为 carry。

 

var addTwoNumbers = function(l1, l2) {let head = null, tail = null;let carry = 0;while (l1 || l2) {const n1 = l1 ? l1.val : 0;const n2 = l2 ? l2.val : 0;const sum = n1 + n2 + carry;if (!head) {head = tail = new ListNode(sum % 10);} else {tail.next = new ListNode(sum % 10);tail = tail.next;}carry = Math.floor(sum / 10);if (l1) {l1 = l1.next;}if (l2) {l2 = l2.next;}}if (carry > 0) {tail.next = new ListNode(carry);}return head;
};

7.跳转提示-稀土掘金

细节

当我们遍历到链表的最后一个节点时,cur.next 为空节点,如果不加以判断,访问 cur.next 对应的元素会产生运行错误。因此我们只需要遍历到链表的最后一个节点,而不需要遍历完整个链表。

var deleteDuplicates = function(head) {if (!head) {return head;}let cur = head;while (cur.next) {if (cur.val === cur.next.val) {cur.next = cur.next.next;} else {cur = cur.next;}}return head;
};

 8.. - 力扣(LeetCode)

var hasCycle = function (head) {let slow = head, fast = head; // 乌龟和兔子同时从起点出发while (fast && fast.next) {slow = slow.next; // 乌龟走一步fast = fast.next.next; // 兔子走两步if (fast === slow) // 兔子追上乌龟(套圈),说明有环return true;}return false; // 访问到了链表末尾,无环
};

 9.. - 力扣(LeetCode)

 hash的办法

哈希集合(HashSet)是一种基于哈希表的数据结构,主要用于存储不重复的元素。它允许以常数时间复杂度(O(1))进行添加、删除和查找操作。JavaScript 中没有直接的 HashSet 实现,但我们可以使用 Set 对象来实现类似的功能。

function intersection(nums1, nums2) {let result = [];let hash = {};// 填充哈希表for (const num of nums1) {hash[num] = 1;}// 查找交集并更新结果for (const num of nums2) {if (hash[num]) {result.push(num);hash[num] = 0; // 确保每个元素只添加一次}}return result;
}// 测试用例
const nums1 = [1, 2, 2, 1];
const nums2 = [2, 2];
console.log(intersection(nums1, nums2)); // 输出: [2]const nums3 = [4, 9, 5];
const nums4 = [9, 4, 9, 8, 4];
console.log(intersection(nums3, nums4)); // 输出: [4, 9]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

界面组件DevExpress WinForms v24.1 - 支持DateOnly TimeOnly类型

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

1976 ssm 营地管理系统开发mysql数据库web结构java编程计算机网页源码Myeclipse项目

一、源码特点 ssm 营地管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开…

Pycharm一些问题解决办法

研究生期间遇到关于Pycharm一些问题报错以及解决办法的汇总 ModuleNotFoundError: No module named sklearn’ 安装机器学习库&#xff0c;需要注意报错的sklearn是scikit-learn缩写。 pip install scikit-learnPyCharm 导包提示 unresolved reference 描述&#xff1a;模块…

网络爬虫的架构

网络爬虫的架构 网络爬虫的架构&#xff0c;犹如一座精心设计的桥梁&#xff0c;连接着海量的互联网数据与我们的需求。在网络爬虫的世界里&#xff0c;每一个组件都扮演着至关重要的角色&#xff0c;它们协同工作&#xff0c;确保数据的高效获取与处理。 在爬虫架构的顶层&a…

时序(流式)图谱数据仓库AbutionGraph功能介绍-Streaming Graph OLAM Database

AbutionGraph是一款端到端的流式数据实时分析的图谱数据库&#xff0c;实时&#xff08;流式写入实时、高QPS决策分析实时、流式预处理实时&#xff09;表现在&#xff1a; 构建实时查询QPS响应时长与历史数据量无关的图模型&#xff1b;接入流式数据并实时更新图计算指标&…

Spring Cloud Consul作为配置中心实践

官网地址&#xff1a;https://docs.spring.io/spring-cloud-consul/docs/current/reference/html/#spring-cloud-consul-config 先说个人总结&#xff1a;作为配置中心对比config、Consul以及Nacos后&#xff0c;建议使用 Nacos。 Consul 提供了一个键/值存储用于保存配置和其…

Vite: 代码分割与拆包

概述 在生产环境下&#xff0c;为了提高页面加载性能&#xff0c;构建工具一般将项目的代码打包(bundle)到一 起&#xff0c;这样上线之后只需要请求少量的 JS 文件&#xff0c;大大减少 HTTP 请求。当然&#xff0c;Vite 也不例 外&#xff0c;默认情况下 Vite 利用底层打包引…

简单的本地局域网的前后端接口联调

由于项目被赶进度了&#xff0c;急于前后端联调接口&#xff0c;但是我又没钱买服务器&#xff08;主要我也不会部署&#xff09;&#xff0c;所以我这里就紧急找一个后端的大神朋友请教了一下&#xff1a;苏泽SuZe-CSDN博客 提示&#xff1a;这里不讲后端怎么写接口、前端怎么…

Java的异常处理体系

目录 异常处理1、Java的异常类层次结构2、try-catch-finally 使用注意事项3、在Web应用中如何实现全局异常处理机制 异常处理 1、Java的异常类层次结构 其中Error表示程序运行错误 常见的错误类型有&#xff1a; OutOfMemoryError (内存溢出错误) StackOverFlowError (栈内存溢…

【408计算机组成原理】计算机系统层次结构

计算机系统层次结构 计算机系统由硬件和软件两大部分组成&#xff0c;它们相互作用&#xff0c;共同完成信息处理任务。计算机系统可以分为多个层次&#xff0c;每一层次都有其特定的功能和作用。 硬件层次 输入设备&#xff1a;这些设备负责将用户的指令和数据输入到计算机…

论文学习:基于知识图谱的RAG进行客服问答

1.简介 文章名称&#xff1a; Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering&#xff08;基于知识图谱的RAG进行客服问答&#xff09; 2.摘要ABSTRACT 在客户服务技术支持中&#xff0c;迅速准确地检索相关的过往问题对于有…

Qt Creator创建一个用户登录界面

目录 1 界面设计 2 代码 2.1 登录界面 2.2 注册界面 2.3 登陆后的界面 3 完整资源 这里主要记录了如何使用Qt Creator创建一个用户登录界面&#xff0c;能够实现用户的注册和登录功能&#xff0c;注册的用户信息存储在了一个文件之中&#xff0c;在登录时可以比对登录信息…

Go 常用文件操作

查找文件/目录 os.Stat(String)组合路径 dir, _ : homedir.Dir() filename : args[0] path : filepath.Join(dir, filename)homedir.Dir()为home根目录。 filepath.Join 会自动处理分隔符&#xff0c;将目录和文件名组合成文件路径。 检查是否含有后缀.json strings.HasSu…

【深度学习】常用命令行指令汇总

这些指令对于管理深度学习环境、监控资源使用、调试程序等方面 查看显卡使用情况 要实时监控NVIDIA显卡的状态,可以使用命令: nvidia-smi -l 1这条命令会每秒刷新一次显卡的使用情况,包括GPU利用率、显存使用情况等。 查看当前Python环境 查看当前使用的Python环境,可…

堆排序(手写堆)

堆排序 输入一个长度为 n的整数数列&#xff0c;从小到大输出前 m小的数。 输入格式 第一行包含整数 n和 m。 第二行包含 n个整数&#xff0c;表示整数数列。 输出格式 共一行&#xff0c;包含 m个整数&#xff0c;表示整数数列中前 m小的数。 数据范围 1≤m≤n≤105&…

【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出

文章目录 前言增加守护进程1. 编写监控脚本2. 创建 systemd 服务文件3. 启动并启用服务4. 验证服务是否运行注意事项 如何修改守护进程1. 修改监控脚本2. 重新加载并重启服务3. 验证服务是否运行总结 如何设置一个日志文件来查看信息1. 修改监控脚本以记录日志方法一&#xff1…

利用代理IP实现高效大数据抓取的策略与技巧

在当今信息爆炸的时代&#xff0c;数据对于各行各业都至关重要。而数据的获取往往需要通过网络爬取。然而随着网络安全意识的提高和反爬虫机制的加强&#xff0c;传统的数据爬取方式可能会受到限制。在这种情况下&#xff0c;代理IP技术的应用就显得尤为重要。本文将探讨代理IP…

C语言 | Leetcode C语言题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; int countPrimes(int n) {if (n < 2) {return 0;}int isPrime[n];int primes[n], primesSize 0;memset(isPrime, 0, sizeof(isPrime));for (int i 2; i < n; i) {if (!isPrime[i]) {primes[primesSize] i;}for (int j 0; j < …

C++ | Leetcode C++题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode* removeElements(ListNode* head, int val) {struct ListNode* dummyHead new ListNode(0, head);struct ListNode* temp dummyHead;while (temp->next ! NULL) {if (temp->next->val val) {…

arco disign vue 日期组件的样式穿透

问题描述: 对日期组件进行样式穿透. 原因分析: 如图,日期组件被展开时它默认将dom元素挂载到body下, 我们的页面在idroot的div 里层, 里层想要穿透外层是万万行不通的. 解决问题: 其实官网提供了参数,但是并没有提供例子, 只能自己摸索着过河. 对于日期组件穿透样式,我们能…