全排列
一、题目
给定一个不含重复数字的数组
nums,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:
输入:
nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:
输入:
nums = [0,1]
输出:[[0,1],[1,0]]示例 3:
输入:
nums = [1]
输出:[[1]]提示:
1 <= nums.length <= 6-10 <= nums[i] <= 10nums中的所有整数 互不相同
二、题解
文章作者: loltoulan
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 可乐大红袍🥤🥤🥤!
相关推荐

2024-12-09
面试经典-二叉树最大深度
二叉树最大深度一、题目104. 二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7]输出:3 示例 2: 输入:root = [1,null,2]输出:2 提示: 树中节点的数量在 [0, 104] 区间内。 -100 <= Node.val <= 100 二、题解 深度优先遍历(Depth-First Search, DFS)是一种常用的树或图的遍历算法。它从根节点开始,沿着树的深度方向遍历节点,尽可能深入地访问每个分支,直到无法继续深入为止,然后回溯到上一个节点,继续访问其他未访问的分支 深度优先遍历(Depth-First Search, DFS)包括前序遍历、中序遍历和后序遍历: 前序遍历(根节点 -> 左子树 -> 右子树)的结果为: 1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7 中序遍...

2024-12-05
面试经典-分割链表
分割链表题目86. 分隔链表 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5] 示例 2: 输入:head = [2,1], x = 2输出:[1,2] 提示: 链表中节点的数目在范围 [0, 200] 内 -100 <= Node.val <= 100 -200 <= x <= 200 题解题解一(两次循环法)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556public class LinkedListPartition { public static void main(String[] args) {// ...

2024-12-04
面试经典-删除排序链表中的重复元素II
删除排序链表中的重复元素II题目82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head = [1,2,3,3,4,4,5]输出:[1,2,5] 示例 2: 输入:head = [1,1,1,2,3]输出:[2,3] 提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序 排列 题解 此题有点难,适合二刷 12345678910111213141516171819202122232425262728293031public class DeleteDuplicates { public static void main(String[] args) { ListNode node1 = new ListNode(1); node1.next = new ListNode(1); no...

2024-12-04
面试经典-删除链表的倒数第N个节点
删除链表的倒数第N个节点题目19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1输出:[] 示例 3: 输入:head = [1,2], n = 1输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz 进阶:你能尝试使用一趟扫描实现吗? 题解 此题有点难,适合二刷 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import java.util.ArrayList;import java.util.List;public class RemoveNthF...

2024-12-03
面试经典-反转链表II
反转链表II题目92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5] 示例 2: 输入:head = [5], left = 1, right = 1输出:[5] 提示: 链表中节点数目为 n 1 <= n <= 500 -500 <= Node.val <= 500 1 <= left <= right <= n 进阶: 你可以使用一趟扫描完成反转吗? 题解题解一 转换为数组再进行处理 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152public class ReverseBetween ...

2024-12-13
面试经典-完全二叉树的节点个数
完全二叉树的节点个数一、题目222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例 1: 输入:root = [1,2,3,4,5,6]输出:6 示例 2: 输入:root = []输出:0 示例 3: 输入:root = [1]输出:1 提示: 树中节点的数目范围是[0, 5 * 104] 0 <= Node.val <= 5 * 104 题目数据保证输入的树是 完全二叉树 进阶:遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗? 题解题解一(递归)123456789101112131415161718192021222324252627282930313233/** * Definition for a binary tree node. * public ...
公告
随时摸鱼,随时跑路,今天还没有跑路哦