news 2026/4/18 3:44:33

LeetCode047全排列II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode047全排列II

题目:

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

示例 1:

  • 输入:nums = [1,1,2]

  • 输出:
    [[1,1,2],
    [1,2,1],
    [2,1,1]]

示例 2:

  • 输入:nums = [1,2,3]

  • 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

提示:

  • 1 <= nums.length <= 8

  • -10 <= nums[i] <= 10

java:

public class Leetcode047 { public static List<List<Integer>> res = new ArrayList<>(); public static List<Integer> path = new ArrayList<>(); public static List<List<Integer>> permute(int[] nums) { boolean[] used = new boolean[nums.length]; Arrays.fill(used, false); Arrays.sort(nums); backtrack(nums, used); return res; } private static void backtrack(int[] nums, boolean[] used) { if (path.size() == nums.length) { res.add(new ArrayList<>(path)); return; } for (int i = 0; i < nums.length; i++) { if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false) { continue; } if (used[i] == false) { used[i] = true; path.add(nums[i]); backtrack(nums, used); path.remove(path.size() - 1); used[i] = false; } } } public static void main(String[] args) { int[] nums = {1, 2, 3}; System.out.println(permute(nums)); } }

Go:

package LeetCode import "sort" var ( res047 [][]int path047 []int st047 []bool ) func PermuteUnique047(nums []int) [][]int { res047 = make([][]int, 0) path047 = make([]int, len(nums)) st047 = make([]bool, len(nums)) sort.Ints(nums) dfs047(nums, 0) return res047 } func dfs047(nums []int, index int) { if index == len(nums) { tmp := make([]int, len(nums)) copy(tmp, nums) res047 = append(res047, tmp) } for i := 0; i < len(nums); i++ { if i != 0 && nums[i] == nums[i-1] && !st047[i-1] { continue } if !st047[i] { path047 = append(path047, nums[i]) st047[i] = true dfs047(nums, index+1) st047[i] = false path047 = path047[:len(path047)-1] } } } func main() { nums := []int{1, 1, 2} path := LeetCode.PermuteUnique047(nums) fmt.Println(path) }

是否还会记着我的样子.

如果大家喜欢我的分享的话.可以关注我的微信公众号

念何架构之路

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:29:23

桌面版脑图完整使用教程:跨平台思维导图解决方案

桌面版脑图完整使用教程&#xff1a;跨平台思维导图解决方案 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版&#xff0c;思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/4/11 7:33:01

基于51单片机的频率可调多波形函数发生器设计与实现

系统总体设计概述 点击下载设计资料&#xff1a;https://download.csdn.net/download/m0_51061483/91926361 1.1 设计背景与研究意义 函数发生器是电子实验、电子测量以及自动化教学中常用的基础仪器之一&#xff0c;能够输出多种标准波形信号&#xff0c;为电路调试、系统测…

作者头像 李华
网站建设 2026/4/10 19:56:25

Sunshine游戏串流实战指南:从零搭建到极致体验

Sunshine游戏串流实战指南&#xff1a;从零搭建到极致体验 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine …

作者头像 李华
网站建设 2026/4/13 15:44:07

33、U-Boot使用指南:环境变量、脚本、镜像与启动配置

U-Boot使用指南:环境变量、脚本、镜像与启动配置 1. U-Boot环境变量的使用 U-Boot启动并运行后,可通过设置适当的环境变量进行配置,其环境变量的使用与Unix shell(如bash)类似。使用 printenv 命令可查看目标设备上环境变量的当前值,以下是OpenMoko GTA01开发硬件上的…

作者头像 李华
网站建设 2026/4/17 14:22:07

39、Linux 系统性能分析与调试指南

Linux 系统性能分析与调试指南 在 Linux 系统开发和维护过程中,性能分析和调试是至关重要的环节。本文将详细介绍代码覆盖率分析、系统性能分析、内核性能分析、中断延迟测量以及内存调试等方面的内容,帮助开发者更好地优化系统性能。 代码覆盖率分析 在程序执行完毕后,可…

作者头像 李华