首页 > 其他分享 >【刷题笔记】46. Permutations

【刷题笔记】46. Permutations

时间:2023-09-10 14:01:02浏览次数:36  
标签:used return nums 46 res Permutations len int 刷题

题目

Given a collection of distinct integers, return all possible permutations.

Example:

Input: [1,2,3]
Output:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

题目大意

给定一个没有重复数字的序列,返回其所有可能的全排列。

解题思路

  • 求出一个数组的排列组合中的所有排列,用 DFS 深搜即可。

参考代码

package leetcode

func permute(nums []int) [][]int {
	if len(nums) == 0 {
		return [][]int{}
	}
	used, p, res := make([]bool, len(nums)), []int{}, [][]int{}
	generatePermutation(nums, 0, p, &res, &used)
	return res
}

func generatePermutation(nums []int, index int, p []int, res *[][]int, used *[]bool) {
	if index == len(nums) {
		temp := make([]int, len(p))
		copy(temp, p)
		*res = append(*res, temp)
		return
	}
	for i := 0; i < len(nums); i++ {
		if !(*used)[i] {
			(*used)[i] = true
			p = append(p, nums[i])
			generatePermutation(nums, index+1, p, res, used)
			p = p[:len(p)-1]
			(*used)[i] = false
		}
	}
	return
}

标签:used,return,nums,46,res,Permutations,len,int,刷题
From: https://blog.51cto.com/u_16110811/7425108

相关文章

  • UVA11464 题解
    思路分析暴力枚举?我们可以枚举每个数字变或不变,最后判断整个矩阵是否满足条件。但是,这样做最多需要枚举\(2^{255}≈5\times10^{67}\)中情况,是一定会超时的。大眼观察注意到\(n\le15\),第一行只有不超过\(2^{15}=32768\)种可能,所以第一行的情况是可以枚举的。接下来,根据第......
  • LeetCode刷题笔记
    算法1.差分数组+前缀和1589.所有排列中的最大和-力扣(LeetCode)对于每一次遍历都有m个数需要加1,如果对这些数遍历,则需要O(m)复杂度,此时可以记录这m个数的差分数组:​ 这样就可以把时间复杂度缩小到O(1),之后求前缀和就可以得到原来的数组。2.线性筛(欧拉筛)求素数2601.质数减法......
  • 国产化基于GM4680-1000 FMC AD 124通道 14bit 1Gsps
    概要国产化基于GM4680-1000FMCAD124通道14bit1Gsps子卡 原理框图 更多信息请加weixin-pt890111获取技术指标•基于GM4680-1000AD芯片•4路模拟输入;•一路外部参考/采样输入信号(CLK);一路为触发输出(TRO);一路为触发输入(TRI);•2颗板载状态指示LED•采样率:14bit/......
  • [刷题记录Day 23]Leetcode二叉树
    No.1题目修剪二叉搜索树思路递归法有点抽象,要对具体案例做模拟才好懂递归分析返回值:节点,参数:节点,[下界,上界]终止条件:遇到空节点,返回空单层递归逻辑:判断不在范围内的情况:当前节点小于下界/大于上界,直接返回右/左子树递归结果;若在范围内,则递归筛查左右子树,返回当前节点......
  • 17、复合类型之引用(P45、P46)
     P45倒数第五行“引用为对象起了另外一个名字,引用类型引用另外一种类型。”intx=10;//声明一个整数变量x,并初始化为10int&refX=x;//声明一个整数引用refX,它是x的别名ref就是x的另外一个名字,refX就是引用类型,它引用了x(int整形)P45倒数第四行,声明符:具体来说,声......
  • 【刷题笔记】45. Jump Game II
    题目Givenanarrayofnon-negativeintegers nums,youareinitiallypositionedatthefirstindexofthearray.Eachelementinthearrayrepresentsyourmaximumjumplengthatthatposition.Yourgoalistoreachthelastindexintheminimumnumberofju......
  • CF446C
    题目链接description写个数据结构,支持区间加斐波那契数列和区间求和。模1e9+9。solution设\(A=\begin{bmatrix}1&1\\1&0\end{bmatrix}\)。则\(\begin{bmatrix}F_{n+1}&F_{n}\end{bmatrix}=\begin{bmatrix}1&0\end{bmatrix}\timesA^n\)。于是问题变成了区间加......
  • 【刷题笔记】42. Trapping Rain Water
    题目Givennnon-negativeintegersrepresentinganelevationmapwherethewidthofeachbaris1,computehowmuchwateritisabletotrapafterraining.Theaboveelevationmapisrepresentedbyarray[0,1,0,2,1,0,1,3,2,1,2,1].Inthiscase,6unitsof......
  • 代码随想录刷题记录——栈与队列篇
    栈与队列理论基础 栈stack:先进后厨队列queue:先进先出STL(C++标准库)STL栈和队列属于容器适配器(containeradapter)优先队列priority_queue:默认大根堆,如果是pair<a,b>,默认比较a大小如果需要比较b大小,且小根堆,可以如下实现232.用栈实现队列题目链接 pop操作时,当......
  • (J-Link)HC32F460JETA SEGGER RTT打印输入输出调试信息
    完美解决https://blog.csdn.net/qq_40675506/article/details/127005532起初最后输出部分费了好大劲在填(setRTTAddr)的时候,找地址很不容易。 不过之后很长一段时间了,直接勾选的auto就直接可以了。很神奇 ......