博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣题解-46. 全排列(回溯法递归)
阅读量:4299 次
发布时间:2019-05-27

本文共 932 字,大约阅读时间需要 3 分钟。

题目:46. 全排列

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

示例:

输入: [1,2,3]

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

回溯法递归思路:

搜索路径选择path.push_back(nums[i]);

搜索路径回溯path.pop_back();

搜索结束条件nums.size() == path.size()

代码

class Solution {
vector
> ans;//结果public: vector
> permute(vector
& nums) {
vector
path;//保存搜索路径 dfs(nums, path);//递归函数 return ans; } void dfs(vector
&nums, vector
path) { if(nums.size() == path.size()) { //搜索结束条件 ans.push_back(path);//保存搜索路径作为一次成功的搜索 return; } //穷举搜索 for(int i = 0; i < nums.size(); i++) { if(path.end() != find(path.begin(), path.end(), nums[i])) { continue;//排除已经搜索过的 } path.push_back(nums[i]);//搜索路径选择 dfs(nums, path);//递归搜索 path.pop_back();//搜索路径回溯(撤销搜索路径选择) } }};
你可能感兴趣的文章
微服务架构系列主题:微服务架构及其最重要的 10 个设计模式!
查看>>
JavaWeb学习-注解-1-注解快速入门
查看>>
JavaWeb学习-注解-2-注解作用目标限定和保留策略
查看>>
JavaWeb学习-注解-3-反射注解
查看>>
JavaWeb学习-动态代理-1-方法newProxyInstance介绍
查看>>
JavaWeb学习-动态代理-2-invoke()方法和动态代理Waiter类练习
查看>>
RestAssured接口自动化从入门到框架搭建-20-框架组装-Maven项目环境搭建和BaseTest类和日志模块
查看>>
RestAssured接口自动化从入门到框架搭建-21-框架组装-TestBase类功能扩充和工具类TestUtils
查看>>
C++面向对象-1-类和对象以及封装
查看>>
GTest基础学习-04-第3个单元测试-测试夹具test fixture
查看>>
GTest基础学习-05-第5个单元测试-父test fixture和子test fixture的使用
查看>>
GTest基础学习-06-第6个单元测试-接口测试(类型参数驱动)
查看>>
从零开始到设计Python+Selenium自动化测试框架-如何开始
查看>>
Python+Selenium基础篇之2-打开和关闭火狐浏览器
查看>>
Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器
查看>>
Python+Selenium基础篇之4-XPath的使用
查看>>
Python+Selenium基础篇之5-第一个完整的自动化测试脚本
查看>>
Python+Selenium练习篇之8-利用css定位元素
查看>>
Python+Selenium练习篇之19-断言页面标题
查看>>
Python+Selenium练习篇之20-获取元素上面的文字
查看>>