题目:

Given a collection of 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], and [3,2,1].

解答:

回溯法(剪枝法)。技巧以及注意事项已经在《【LeetCode从零单刷】Generate Parentheses》中说明:

  1. 每次只递归一步,绝不多一步。这个和递归法是相同的道理;
  2. 只有最底层负责存入结果,存入一个脱离于函数的全局内存
  3. 层与层之间,不再传递数据(因为回溯的答案不止一个,每层处理去重没必要,交给最底层存入)。但是每层必须有 return 返回上层,否则函数无法终止),return 一个空值
class Solution {
public:vector<vector<int>> ret;void gao(vector<int> rest, vector<int> ans){if (rest.size() == 0)    {ret.push_back(ans);return;}else    {for(vector<int>::iterator it=rest.begin(); it != rest.end(); it++){vector<int> tmp_rest = rest;vector<int> tmp_ans  = ans;ans.push_back(*it);rest.erase(it);gao(rest, ans);rest = tmp_rest;ans  = tmp_ans;}return;}}vector<vector<int>> permute(vector<int>& nums) {ret.clear();vector<int> tmp;tmp.clear();gao(nums, tmp);return ret;}
};
这里还需要另外注意一些事项:
  1. 迭代器是一种指针,取值时需要加上 *,即 (*it);
  2. vector 容器中删除某个值,需要利用到 vector.erase( 迭代器 )。同时注意,是直接修改原本的 vector 容器。所以需要保存修改之前的容器;
  3. 迭代器只能适用于原本的容器,即使新的容器复制了老的容器,迭代器也无法适用于新容器

【LeetCode从零单刷】Permutations相关推荐

  1. LeetCode 从零单刷个人笔记整理(持续更新)

    更新至2020.2.23 github:https://github.com/ChopinXBP/LeetCode-Babel 本人博客用于个人对知识点的记录和巩固. 用几乎所有可行的方法进行了实现和 ...

  2. 从零单刷Leetcode(JAVA描述)——344. 反转字符串

    链接:https://leetcode-cn.com/problems/reverse-string 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不 ...

  3. 从零单刷Leetcode(JAVA描述)—— 557. 反转字符串中的单词 III

    链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格 ...

  4. 从零单刷Leetcode(JAVA描述)——46. 全排列

    链接:https://leetcode-cn.com/problems/permutations 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1 ...

  5. 【LeetCode从零单排】No198.House Robber No91.Decode Ways139 word break(动态规划典型应用)

    1.题目 一道典型的Dynamic Programming的题目. You are a professional robber planning to rob houses along a stree ...

  6. 【LeetCode从零单排】No70.ClimbingStairs

    题目 爬楼梯问题,这是一道很有趣的问题.首先看题目: You are climbing a stair case. It takes n steps to reach to the top. Each ...

  7. 【LeetCode从零单排】No26.Remove Duplicates from Sorted Array

    题目      题目要求:去除sort int数组中的重复项. Given a sorted array, remove the duplicates in place such that each ...

  8. 【LeetCode从零单排】No.7 Reverse Integer

    前话       今天开始励志刷一下leetcode上面的题目(还好这个网站没被TG和谐).从easy的开始,数一下差不多有40道,争取两个月搞定. 题目        没想到做的第一道题目,虽然看似 ...

  9. 从零单刷数据结构(Java描述)(二)——算法概论

    算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性: 输入输出:算法具有零个或多个输入,至少有一个或多个输出,即算法是一定需要输出的 ...

最新文章

  1. MIS开发中.net Framework的打印功能
  2. 有监督学习的算法fit(x,y)传两个参数无监督学习的算法是fit(x),即传一个参数
  3. Mysql JDBC 连接串参数说明
  4. 《Objective-c》Foundation框架 -(NSDate)
  5. 陈述、叙述、表述、描述的区别
  6. 【计算机网络】链路与连通
  7. TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项
  8. Python AI和机器学习库
  9. js系列教程6-BOM操作全解
  10. MYSQL的Commit与程序的原子性
  11. 计算机无法 鼠标没反应,鼠标插电脑上没反应怎么回事_鼠标连接电脑没反应的解决步骤...
  12. python转换excel 列号 为数字 数字转为列号
  13. 2012年8月21日
  14. uni-app使用HBuilder X编辑器本地打包app(apk)详情步骤
  15. bat 命令如何启动远程PC上的一个程序?
  16. LDO芯片CMO3236 系列低功耗
  17. 比较全的Struts介绍04
  18. 为什么单片机定时器的TH和TL都要设置?
  19. 测试开发工作者日记:2020.10.21
  20. c# 选中dataGridView中的一行将其删除

热门文章

  1. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建
  2. 全球与中国家庭保险箱市场深度研究分析报告
  3. 如何与客户高效地沟通需求
  4. 微型计算机原理综合实验报告,微机原理综合实验报告[精心整理].doc
  5. 力扣739. 每日温度
  6. 特征分解(eigendecomposition) and 奇异值分解(singular value decomposition, SVD)
  7. 【报名来参与】访谈调研+企业盘点+榜奖峰会,与数据猿共筑2021
  8. [笔记分享] [遥控器]Android红外及蓝牙遥控器适配流程
  9. live-server的使用
  10. CARLA_0.8.2 相关问题