1.简单介绍
在提交您的代码之前,建议您对各种测试用例进行代码测试,特别是问题描述中提供的测试用例。
测试用例区域默认情况下已经填充了示例测试用例,但您可以修改这些用例以测试不同的情况。下图用红色突出显示了测试区域。
示例:让我们以题目 “求出所有子序列的能量和” 为参考。
在设置好您的测试用例后,点击“运行”按钮在 LeetCode 上执行,就可以展示测试结果,可以验证当前代码输出与这些测试用例的通过情况。如果您解决了代码中的所有问题,点击“提交”按钮后您的代码将在系统所有测试用例中运行,彻底验证您的代码,以验证其正确性。
2.输入模式
在输入测试用例时,您可以选择两种输入模式:标签效果模式或文本模式。要在这两者之间切换,请点击测试用例面板下方的 </> Source
按钮。
2.1 标签效果模式
此模式提供了一个结构化和用户友好的界面。您可以使用图形界面逐一输入参数。例如,要输入 nums = [1, 2, 3, 4]
和 k = 3
的测试用例,只需在各自的字段中输入这些值。
2.2 文本模式
在文本模式下,您在不同的行上输入参数。要测试多个用例,您可以连续输入它们。以下是如何输入两个测试案例的示例:
这个方法适用于您需要一次性输入或编辑多个测试用例的情况。
3. LeetCode 输入格式
在 LeetCode 中正确输入测试用例对于调试您的代码至关重要。本节将指导您了解您可能会遇到的各种输入类型,从基本数据类型到复杂的自定义数据结构和特殊输入场景。
3.1 基本数据类型
本节涵盖基本数据类型,如整数、布尔值、字符和字符串。这些是构造复杂数据结构的基础,因此掌握其输入格式对于处理高级结构至关重要。
类型 | 描述 | 实例 | 备注 |
---|---|---|---|
整型 | 一种表示没有小数部分的整数数据类型。 通常大小为 4 字节(32 位)。 |
| 整型的范围是[-231, 231-1] 。 |
长整型 | 整型的扩展版本,可以存储更大的数值。 通常大小为 8 字节(64 位)。 |
-9223372036854775808 | 长整型的范围是[−263, 263-1]. |
布尔值 | 表示两个二进制值之一的数据类型: |
| |
双精度浮点数 | 表示带有小数点的浮点数。 通常大小为 8 字节(64 位)。 |
| 双精度浮点数的范围大约是[−1.7 × 10308, 1.7 × 10308]. 避免使用逗号或多个小数点。 |
字符型 | 表示单个字母、数字字符、符号或标点符号的数据类型。 通常大小为 1 字节(8 位),按 ASCII 编码方式处理。 |
| 字符必须在标准 ASCII 范围内(0 至 127 )。 字符必须用双引号(”)括起来。 必要时使用转义序列(例如, |
字符串 | 一系列字符,包括字母、数字、标点符号、空格和其它符号。 |
| 字符串必须用双引号(”)括起来。 字符串中的每个字符必须在标准 ASCII 范围内(0 至 127)。 |
3.2 标准数据结构
LeetCode 题目通常涉及复杂的数据结构,如链表和二叉树已经被提前定义好以节省您的时间。下表介绍了如何为测试用例格式化和输入这些结构。
类型 | 描述 | 实例 | 备注 |
---|---|---|---|
数组 | 用于存储一系列具有相同数据类型的元素的数据结构。 |
| 数组必须包含相同数据类型的元素。 |
二维数组 | 一个由数组组成的数组,其中每个子数组代表一行。它可以像矩阵的结构保存元素。 |
| 二维数组可以固定列的数量(例如,C# 中的 |
链表 | 由节点组成的线性数据结构,每个节点包含一个值和指向下一个节点的指针。 |
| 序列化:
备注: 使用提供的 |
二叉树 | 树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。 |
| 序列化:
备注: 使用提供的 |
3.3 自定义数据结构
一些 LeetCode 题目定义了特定于该问题的自定义类型或数据结构。问题描述中详细介绍了结构和输入格式。类型或数据结构定义,包括其实现的类、构造函数和方法,在描述和代码注释中提供。
示例:
N 叉树
二叉树的扩展,其中每个节点可以有任意数量的子节点。
示例问题:
序列化和反序列化 N 叉树(Plus 会员)
多级双向链表
一个链表,其中节点可以有需要扁平化的子列表。
示例问题:扁平化多级双向链表
带有随机指针的链表
链表的每个节点中都有一个额外的指针,可以指向列表中的任何节点。
示例问题:随机链表的复制
无向图
一个无向图,其中每个节点都有一个值和一组邻接节点列表。
示例问题:克隆图
3.4 处理特殊输入
在某些 LeetCode 题目中,某些输入参数在内部用于构建类型或数据结构,并且可能无法在您的代码中直接访问。理解这些特殊的输入对于正确设置测试用例至关重要。
示例:
环形链表
包含循环的链表。额外的pos
参数表示尾节点的下一个指针所连接的节点的索引。只有head
被传递到您的函数中;pos
用于构建循环,在您的函数内部无法访问。扫地机器人(Plus 会员)
一个机器人被控制用来清洁一个有障碍物的房间。参数
room
,row
和col
分别代表房间的地图和机器人的初始位置。你只接收到一个robot
对象,你必须使用它的接口来控制它清洁房间。机器人的位置不是直接可知的,你必须依赖它的 API 来导航。在这个问题中,你需要使用一系列猜测来猜测一个隐藏的单词。每个猜测都返回与隐藏单词匹配的字母数量。隐藏的单词本身对你的函数是不可见的;只有每次猜测的响应是可用的。
3.5 设计问题格式
LeetCode 上的 设计问题 很特别,因为它们通常需要您实现具有特定约束和要求的接口。这些问题需要结合算法知识和软件工程原理。
设计问题的输入格式由两部分组成:
函数名:在自定义类上调用的函数名列表。
函数参数:与每个函数调用对应的参数列表。
示例:
思考题目 最小栈 。输入格式如下:
["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[]]
此输入对应于以下函数调用序列:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); // 返回 -3 minStack.pop(); minStack.top(); // 返回 0 minStack.getMin(); // 返回 -2
这种格式可以帮助您可视化该类及其方法在测试用例中的使用情况。
3.6 数据库问题格式
对于数据库问题,输入格式由预定义表的内容组成。这些表中填充了数据,此处 详细介绍了其输入格式。