news 2026/6/10 16:46:47

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/6/10 14:39:41

探索汇川PLC三轴简易示教系统:强大功能与便捷编程之旅

三轴示教 可编程 触摸屏程序 功能强大 触摸屏 PLC 程序 汇川plc 三轴简易示教系统&#xff0c;学习性强&#xff0c;程序简单易用。 支持工艺路径保存&#xff0c;可以保存四组工艺路径。 每个工艺路径支持示教100步。汇川H5U与 威纶通触摸屏简易示教系统&#xff0c…

作者头像 李华
网站建设 2026/6/10 15:54:06

FLUX.1-dev图文联合理解能力实测:视觉问答与图像编辑双突破

FLUX.1-dev图文联合理解能力实测&#xff1a;视觉问答与图像编辑双突破 在当前多模态AI快速演进的浪潮中&#xff0c;一个核心问题始终困扰着开发者&#xff1a;如何让模型真正“理解”图文之间的语义关联&#xff0c;而不仅仅是机械地生成或识别&#xff1f;传统文生图模型如…

作者头像 李华
网站建设 2026/6/10 3:25:17

OpenWrt终极磁盘管理神器:luci-app-diskman完整实战指南

OpenWrt终极磁盘管理神器&#xff1a;luci-app-diskman完整实战指南 【免费下载链接】luci-app-diskman Disk Manager for LuCI 项目地址: https://gitcode.com/gh_mirrors/lu/luci-app-diskman luci-app-diskman是OpenWrt生态中功能最强大的磁盘管理插件&#xff0c;为…

作者头像 李华
网站建设 2026/6/10 15:57:42

43、Xenomai实时系统深度解析

Xenomai实时系统深度解析 1. 核心代码逻辑 首先来看一段关键代码: task = vrtx_current_task(); /** Set up a few status bits the VRTX way, so that inquiries* about the task state will return proper information.*/ task->vrtxtcb.TCBSTAT = TBSMBOX; if (time…

作者头像 李华
网站建设 2026/6/9 23:42:35

46、深入探究 Linux 实时补丁:从配置到性能优化

深入探究 Linux 实时补丁:从配置到性能优化 在 Linux 系统的开发与应用中,实时性能的优化是一个至关重要的课题。本文将详细介绍 Linux 实时补丁(RT Patch)的相关内容,包括线程互斥锁初始化、内核配置、不同的抢占模式以及高分辨率定时器等方面,帮助你更好地理解和应用这…

作者头像 李华
网站建设 2026/6/10 3:27:38

48、嵌入式Linux系统开发全解析

嵌入式Linux系统开发全解析 1. 基础概念与符号索引 在嵌入式系统开发中,有诸多基础概念和符号需要了解。例如,分号(;)在某些场景下有特定用途,其相关内容在280页有介绍;斜杠(\)在128、199和207页有相关说明。16位Linux系统在开发中也有其独特地位,相关信息在7页提及…

作者头像 李华