题解 | #有重复项数字的全排列#

有重复项数字的全排列

https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863

func permuteUnique(num []int) [][]int {
	sort.Ints(num)
	size := len(num)
	resArr := make([][]int, 0)
	tmp := make([]int, 0)
	isVisited := make([]bool, size)
	var dfs func(start int)
	dfs = func(start int) {
		if start == size {
			resArr = append(resArr, append([]int(nil), tmp...))
			return
		}
		for i, val := range num {
			//从左至右剔除重复的元素
			if isVisited[i] || (i > 0 && !isVisited[i-1] && val == num[i-1]) {
				continue
			}
			tmp = append(tmp, val)
			isVisited[i] = true
			dfs(start + 1)
			tmp = tmp[:len(tmp)-1]
			isVisited[i] = false
		}
	}
	dfs(0)
	return resArr
}

全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务