博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从头做leetcode之leetcode 46 全排列
阅读量:2434 次
发布时间:2019-05-10

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

46.全排列

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

  • 用DFS的思想,问题是防止相同的数字重复进入,解决方法:用一个标志数组,一个数字进入时使标志数组同位置置为1,递归体内循环遇1则跳过。
class Solution {
public: vector
> permute(vector
& nums) {
if(nums.size() == 0) return {
}; vector
> res; vector
tmp; vector
flag(nums.size(),0); DFS(res,tmp,flag,nums); return res; } void DFS(vector
> &res,vector
&tmp,vector
&flag,vector
nums){ if(tmp.size() == nums.size()){ res.push_back(tmp); } for(int i = 0;i < nums.size();i++){ if(flag[i] == 1) continue; flag[i]=1; tmp.push_back(nums[i]); DFS(res,tmp,flag,nums); tmp.pop_back(); flag[i]=0;//不要忘了回溯的时候置回0 } }};

通过时间:

在这里插入图片描述

转载地址:http://fsemb.baihongyu.com/

你可能感兴趣的文章
FreeBSD安装文件系统(转)
查看>>
最简单FreeBSD网关方案(转)
查看>>
Windows 98 多用户的管理(转)
查看>>
更改Windows XP 的日期和时间(转)
查看>>
windows2000中的“秘密武器”(三)(转)
查看>>
Linux程序应用开发环境和工具经验谈(转)
查看>>
Linux办公一条龙之电子表格Calc(转)
查看>>
在NETBSD上配置ADSL+IPF+IPNAT(转)
查看>>
Windows 98 使用维护向导(转)
查看>>
用win2000收发传真(转)
查看>>
Linux办公一条龙之初识OpenOffice(转)
查看>>
Linux上安装GCC编译器过程(转)
查看>>
使用Windows XP 的任务计划(转)
查看>>
FreeBSD软盘操作(转)
查看>>
Linux分区工具的使用方法(转)
查看>>
深入理解硬盘的Linux分区(转)
查看>>
循序渐进教你LINUX之软件配置方法(转)
查看>>
解读Linux文件权限的设置方法(转)
查看>>
Ext2 文件系统的硬盘布局(转)
查看>>
Linux不完全手册(二)(转)
查看>>