TypeScript 在 LeetCode 上:30 天从新手到专家

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么 TypeScript 是 LeetCode 的理想语言?



如果您至今还在用 JavaScript 解 LeetCode 题目——是时候转向 TypeScript 了。为什么?因为强类型在代码运行前就能排除一整类错误。您不会意外地将字符串传入期望数字的地方,编译器会自行提示对象有哪些可用方法。这就像驾驶一辆带自动驾驶的汽车——更快、更安全、更愉悦。



LeetCode 不仅仅是一个死记硬背算法的平台。它是一个训练场,让您磨练在生产环境中真正需要的技能。而如今 TypeScript 是企业级开发的事实标准。像 Google、Microsoft 和 Airbnb 这样的公司都在寻找能编写类型化代码的开发者。因此,用 TypeScript 解 LeetCode 题目,可谓一举两得:既为面试做准备,又提升了实际技能。



在本文中,我们将探讨从何入手、需要学习哪些类型和数据结构,并逐步解析 3 道不同难度的题目——从简单到困难。开始吧!



开始前需要了解什么



在跳入题海之前,请确保您已打好基础。TypeScript 是 JavaScript 的超集,因此首先需要熟练掌握 JS:闭包、Promise、数组方法、对象操作。没有这些,TypeScript 只会显得像多余的语法糖。



LeetCode 上常用的基本类型

  • number、string、boolean —— 基础,必不可少
  • number[]、string[] —— 数组,90% 的题目都会用到
  • Record<string, number> —— 作为字典(哈希映射)的对象
  • Map<K, V> —— 对象的替代方案,保留顺序
  • Set<T> —— 用于唯一值
  • Tuple —— 元组,在需要返回一对值的题目中很有用
  • null | undefined —— 处理边界情况


最常见的数据结构

  • 数组 —— 基础中的基础。二维数组、排序、二分查找
  • 哈希表 —— 用于快速查找(Two Sum 题目是经典)
  • 栈和队列 —— 用于括号匹配、BFS、DFS 等题目
  • 链表 —— 反转、合并、检测环
  • 树 —— 二叉树、二叉搜索树、遍历
  • 图 —— 通常在高级面试中出现


不要试图一次性学完所有内容。从数组和哈希表开始——这将覆盖 70% 的简单和中等难度题目。



如何在 LeetCode 上配置 TypeScript 环境



LeetCode 原生支持 TypeScript。选择语言时,只需在下拉菜单中点击 "TypeScript" 即可。但如果您想在本地编写代码并测试,以下是基本配置:



npm init -ynpm install typescript @types/node --save-devnpx tsc --init


创建一个 solution.ts 文件,并通过命令 npx tsc solution.ts && node solution.js 运行编译。这将帮助您习惯强类型并实时捕获错误。



3 道 TypeScript 题目解析:从简单到困难



现在进入实践环节。我选择了三道能充分展示 TypeScript 能力且面试中常见的题目。



1. Two Sum(简单)—— 经典题型



题目:给定一个数字数组和一个目标值。需要找到两个数字,使其和等于目标值,并返回它们的索引。



function twoSum(nums: number[], target: number): number[] {    const map = new Map<number, number>();

for (let i = 0; i < nums.length; i++) { const complement = target - nums[i]; if (map.has(complement)) { return [map.

博客

书籍推荐