【LeetCode从零单刷】Permutations
题目:
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》中说明:
- 每次只递归一步,绝不多一步。这个和递归法是相同的道理;
- 只有最底层负责存入结果,存入一个脱离于函数的全局内存;
- 层与层之间,不再传递数据(因为回溯的答案不止一个,每层处理去重没必要,交给最底层存入)。但是每层必须有 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;}
};
- 迭代器是一种指针,取值时需要加上 *,即 (*it);
- vector 容器中删除某个值,需要利用到 vector.erase( 迭代器 )。同时注意,是直接修改原本的 vector 容器。所以需要保存修改之前的容器;
- 迭代器只能适用于原本的容器,即使新的容器复制了老的容器,迭代器也无法适用于新容器
【LeetCode从零单刷】Permutations相关推荐
- LeetCode 从零单刷个人笔记整理(持续更新)
更新至2020.2.23 github:https://github.com/ChopinXBP/LeetCode-Babel 本人博客用于个人对知识点的记录和巩固. 用几乎所有可行的方法进行了实现和 ...
- 从零单刷Leetcode(JAVA描述)——344. 反转字符串
链接:https://leetcode-cn.com/problems/reverse-string 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不 ...
- 从零单刷Leetcode(JAVA描述)—— 557. 反转字符串中的单词 III
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格 ...
- 从零单刷Leetcode(JAVA描述)——46. 全排列
链接:https://leetcode-cn.com/problems/permutations 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1 ...
- 【LeetCode从零单排】No198.House Robber No91.Decode Ways139 word break(动态规划典型应用)
1.题目 一道典型的Dynamic Programming的题目. You are a professional robber planning to rob houses along a stree ...
- 【LeetCode从零单排】No70.ClimbingStairs
题目 爬楼梯问题,这是一道很有趣的问题.首先看题目: You are climbing a stair case. It takes n steps to reach to the top. Each ...
- 【LeetCode从零单排】No26.Remove Duplicates from Sorted Array
题目 题目要求:去除sort int数组中的重复项. Given a sorted array, remove the duplicates in place such that each ...
- 【LeetCode从零单排】No.7 Reverse Integer
前话 今天开始励志刷一下leetcode上面的题目(还好这个网站没被TG和谐).从easy的开始,数一下差不多有40道,争取两个月搞定. 题目 没想到做的第一道题目,虽然看似 ...
- 从零单刷数据结构(Java描述)(二)——算法概论
算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性: 输入输出:算法具有零个或多个输入,至少有一个或多个输出,即算法是一定需要输出的 ...
最新文章
- MIS开发中.net Framework的打印功能
- 有监督学习的算法fit(x,y)传两个参数无监督学习的算法是fit(x),即传一个参数
- Mysql JDBC 连接串参数说明
- 《Objective-c》Foundation框架 -(NSDate)
- 陈述、叙述、表述、描述的区别
- 【计算机网络】链路与连通
- TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项
- Python AI和机器学习库
- js系列教程6-BOM操作全解
- MYSQL的Commit与程序的原子性
- 计算机无法 鼠标没反应,鼠标插电脑上没反应怎么回事_鼠标连接电脑没反应的解决步骤...
- python转换excel 列号 为数字 数字转为列号
- 2012年8月21日
- uni-app使用HBuilder X编辑器本地打包app(apk)详情步骤
- bat 命令如何启动远程PC上的一个程序?
- LDO芯片CMO3236 系列低功耗
- 比较全的Struts介绍04
- 为什么单片机定时器的TH和TL都要设置?
- 测试开发工作者日记:2020.10.21
- c# 选中dataGridView中的一行将其删除
热门文章
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建
- 全球与中国家庭保险箱市场深度研究分析报告
- 如何与客户高效地沟通需求
- 微型计算机原理综合实验报告,微机原理综合实验报告[精心整理].doc
- 力扣739. 每日温度
- 特征分解(eigendecomposition) and 奇异值分解(singular value decomposition, SVD)
- 【报名来参与】访谈调研+企业盘点+榜奖峰会,与数据猿共筑2021
- [笔记分享] [遥控器]Android红外及蓝牙遥控器适配流程
- live-server的使用
- CARLA_0.8.2 相关问题