46. Permutations

来源:互联网 发布:王欣网络直播 编辑:程序博客网 时间:2024/06/06 08:37

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

For example,
[1,2,3] have the following permutations:

[  [1,2,3],  [1,3,2],  [2,1,3],  [2,3,1],  [3,1,2],  [3,2,1]]

思路:
采用逐一向中间集添加元素,并将当中间集元素个数等于 nums 长度的时候,将中间集添加到结果集中,并终止该层递归。

class Solution {    public List<List<Integer>> permute(int[] nums) {          List<List<Integer>> res = new ArrayList<>();          dfs(res, new ArrayList<Integer>(), nums, new boolean[nums.length]);          return res;      }      private void dfs(List<List<Integer>> res, List<Integer> temp, int[] nums, boolean[] used) {          if(temp.size() == nums.length) {              res.add(new ArrayList<>(temp));              return;          }          for(int i = 0; i < nums.length; i++) {              if(!used[i]) {                  used[i] = true;                  temp.add(nums[i]);                  dfs(res, temp, nums, used);                  temp.remove(temp.size() - 1);                  used[i] = false;              }          }      }  }
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 王者荣耀换微信怎么办 淘宝金币过期怎么办 首充没拿赵云又怎么办 淘金币抵价改价怎么办 对方出反甲怎么办 苹果视频打不开怎么办 电脑打不开文档怎么办 油卡充值错了怎么办 qq运动打不开怎么办 壹学车学时无效怎么办? 玩游戏时闪退怎么办 vivo安全模式怎么办 短信删除不了怎么办 手机号码充错怎么办 qq充值充错号码怎么办? 微信充钱充错了怎么办 冲扣币充错号了怎么办 q币充错怎么办 微信充错qb账号怎么办 红包过期怎么办 红包过期了怎么办 微信发不出钱了怎么办 银行卡提微信怎么办 qq加载失败怎么办 一卡通多扣钱了怎么办 快手币误充了怎么办 苹果充值快币贵怎么办 快手充值充错了怎么办 京东上兼职被骗怎么办 飞车手游换手机怎么办 qq钱包没钱怎么办 银行卡身份证到期怎么办 学生怎么办visa借记卡 电话费充错怎么办 支付账户关闭怎么办 苹果id打不开怎么办 手机号码异常该怎么办 手机充值卡充值失败怎么办 手机充值卡失效怎么办 电信储值卡失效怎么办 手机超过有效期怎么办