LeetCode 46. 全排列(回溯)

文章目录

    • 1. 题目信息
    • 2. 解题
      • 2.1 利用hash map解决
      • 2.2 改用bool数组判断是否出现过

1. 题目信息

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

示例:输入: [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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 996. 正方形数组的数目(回溯+剪枝)

2.1 利用hash map解决

  • 在hash map中查找不到的元素,将其push进数组
  • 递归处理
    在这里插入图片描述
class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<int> row;vector<vector<int>> ans;unordered_map<int, int> m;bt(nums, 0, m, row, ans);return ans;}void bt(vector<int>& nums, int count, unordered_map<int, int> m, vector<int> row, vector<vector<int>>& ans){if(count == nums.size()){ans.push_back(row);   return;}for(int i = 0; i < nums.size(); ++i){if(m.find(i) == m.end()){m[i] = 1;row.push_back(nums[i]);bt(nums,count+1,m,row,ans);row.pop_back();m.erase(i);}}}
};

2.2 改用bool数组判断是否出现过

用bool数组做判断,节省内存
在这里插入图片描述

class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<int> row;vector<vector<int>> ans;bool occurred[nums.size()];memset(occurred, 0, sizeof(bool)*nums.size());bt(nums, 0, occurred, row, ans);return ans;}void bt(vector<int>& nums, int count, bool *occurred, vector<int> row, vector<vector<int>>& ans){if(count == nums.size()){ans.push_back(row);   return;}for(int i = 0; i < nums.size(); ++i){if(occurred[i] == false){occurred[i] = true;row.push_back(nums[i]);bt(nums,count+1,occurred,row,ans);row.pop_back();occurred[i] = false;}}}
};
class Solution:def permute(self, nums: List[int]) -> List[List[int]]:import itertoolsreturn list(itertools.permutations(nums, len(nums)))

32 ms 15.1 MB Python3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌师兄的刷题笔记分享!

高畅现在是谷歌无人车部门&#xff08;Waymo&#xff09;的工程师&#xff0c;从事计算机视觉和机器学习方向。他在美国卡内基梅隆大学攻读硕士学位时&#xff0c;为了准备实习秋招&#xff0c;他从夏天开始整理某 code 上的题目&#xff0c;几个月的时间&#xff0c;刷了几百道…

【深度揭秘】百度、阿里、腾讯内部岗位级别和薪资结构,附带求职建议!

“ 最近很忙&#xff0c;文章没有及时更新。。 最近被问得最多就是想进入BAT等一线互联网公司&#xff0c;应该怎么办&#xff1f; 我先从BAT等这样的公司看看他们的招聘需求谈起&#xff0c;再结合这样的公司需要对技术的要求是什么&#xff0c;最后结合我的建议&#xff0…

LeetCode 47. 全排列 II(回溯+搜索剪枝)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个可包含重复数字的序列&#xff0c;返回所有不重复的全排列。 示例:输入: [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1] ]来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode-cn.com/problem…

会议 | 2019 全国知识图谱与语义大会 (CCKS 2019)

会议注册:http://www.ccks2019.cn/?page_id53会议地址与住宿&#xff1a;http://www.ccks2019.cn/?page_id366OpenKG开放知识图谱&#xff08;简称 OpenKG&#xff09;旨在促进中文知识图谱数据的开放与互联&#xff0c;促进知识图谱和语义技术的普及和广泛应用。点击阅读原文…

jieba分词太慢,怎么办?找jieba_fast

原文链接&#xff1a;https://www.rtnzero.com/archives/272.html 有时候感觉处理一个几十M的文本&#xff0c;要一分钟才能好&#xff0c;然后调试时各种心焦&#xff01; 下面举个例子&#xff1a; 归零有一个11.9M的文本文件&#xff0c;是一些抓取到的Python长尾关键词&am…

DGL_图的打印

首先要安装 networkx import matplotlib.pyplot as plt import networkx as nx import dgl import numpy as np def build_karate_club_graph():src np.array([1, 2, 2, 3, 3])dst np.array([0, 0, 1, 0, 1])u np.concatenate([src, dst])v np.concatenate([dst, src])ret…

闲鱼账号被封怎么办?解封看这里!

怎样避免宝贝被屏蔽、限流解封账号&#xff1f;首先我们要学会规避封号的风险 不要频繁的更改账号&#xff0c;不要多账号单手机操作&#xff0c;一机一号才是正确。 不要连续给人商品点赞或是我想要&#xff0c;连续的操作容易被封 不要发布违禁品&#xff0c;违禁品具体可…

推荐系统顶会RecSys’20亮点赏析

文 | banana源 | 知乎RecSys 2020原计划是在南美洲巴西举办&#xff0c;因为疫情的原因不得不改到线上。虽说线上举办会议&#xff0c;参会效果会打折扣&#xff0c;但也为远在北京的我提供了参会便利。得益于各方的努力和软件的应用&#xff0c;整体来看此次参会的效果高于我对…

技术研讨会 | 2019 恒生技术开放日产业链知识图谱专场开始报名

知识图谱旨在采用图结构 (Graph Structure) 来建模和记录世界万物之间的关联关系和知识&#xff0c;是互联网时代的知识工程方法&#xff0c;能够对纷繁复杂、多源异构的金融资讯大数据进行加工整合&#xff0c;提升决策分析的效率&#xff0c;已经得到金融行业从业人士的普遍认…

01.神经网络和深度学习 W1.深度学习概论

文章目录1. 什么是神经网络2. 使用神经网络进行监督学习3. 神经网络的兴起4. 练习题1. 什么是神经网络 它是一个强大的学习算法&#xff0c;类似于人脑的工作方式。 例子1. 单个神经网络 给定房地产市场上房屋大小的数据&#xff0c;预测其价格。这是一个线性回归问题。 …

中文任务型对话系统中的领域分类

大规模跨领域中文任务导向多轮对话数据集及模型CrossWOZ&#xff1a;项目地址&#xff1a;https://gitee.com/yh14232988/CrossWOZ?_fromgitee_search 具体介绍&#xff1a;https://cloud.tencent.com/developer/article/1617197 北邮张庆恒&#xff1a;如何基于 rasa 搭建一…

互联网热门职位薪酬报告

“ 很多同学毕业后想进入互联网领域&#xff0c;当前有什么热门的互联网工作机会&#xff0c;薪资结构怎么样&#xff1f;看图说话&#xff0c;我简短给 大家做一个回报。 互联网职位需求最热的TOP20 mikechen&#xff1a;我个人比较看好旅游、金融板块、医疗健康板块&#x…

算法岗面试前怎样高效刷题?

如果不是为了面试AI工程师刷题有用吗&#xff1f;把时间都放在项目上不香嘛&#xff1f;作为一个战五渣&#xff0c;我特地去观察和询问了身边很多精通此道的大神&#xff0c;他们对于“刷题”还是保持着认可的态度&#xff1a;很清晰地理解问题的本质&#xff0c;并进行合理的…

征稿 | JIST 2019 Regular Technical Papers

JIST 2019: The 9th Joint International Semantic Technology ConferenceNov. 25-27, 2019, Hangzhou, China.http://jist2019.openkg.cn/第 9 届国际语义技术联合会议 JIST 2019 将于今年 11 月在美丽的杭州召开&#xff0c;投稿截止日期临近 (Abstract submission: 23:59 (H…

DGL_子图

用途一&#xff1a;数据集太大&#xff0c;无法画图&#xff0c;取子图看看是有向图/无向图 import dgl import matplotlib.pyplot as plt import networkx as nx G dgl.DGLGraph() G.add_nodes(5) # G.add_edges([0, 1, 2, 3, 4], [1, 2, 3, 4, 0]) # 有向图 G.add_edges(…

史上最全互联网八大技术岗位详解

“互联网技术岗位详解&#xff0c;涉及到前段开发、后端开发、移动端开发、大数据、项目管理、测试、运维、技术管理等八大领域。 架构师 每个产品线都有架构师&#xff0c;在技术平台部门也需要技术平台的架构师。 架构师负责设计系统整体架构&#xff0c;从需求到设计的每个…

什么?!“路由器”也会做信息抽取了?

文 | 雨城编 | QvQ前几周&#xff0c;一个“撞脸”路由器的联合抽取模型TPLinker横空出世&#xff0c;将NYT数据集的分数直接刷上了90&#xff0c;提高了2个百分点。卖萌屋邀请到作者雨城&#xff0c;来聊一聊他们在关系抽取上的工作。目前&#xff0c;该工作已经被COLING 2020…

征稿 | ​第 9 届国际语义技术联合会议征稿(截稿日 9 月 8 号)

第 9 届国际语义技术联合会议 JIST2019 将于今年 11 月在美丽的杭州召开&#xff0c;投稿截止日期延迟至 9 月 8 日。现在征集优秀的研究论文&#xff0c;本届会议还专门设置了 special session track&#xff0c;优秀论文将被推荐到 SCI 期刊发表&#xff0c;目前已申请到 Sem…

LeetCode 142. 环形链表 II(链表环的检测)

文章目录1. 题目链接2. 解题1. 题目链接 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如…

一篇文章详解BAT薪资构成、晋升体系、绩效考核

“ BAT薪资、级别与晋升这一块&#xff0c;全国采取的都是一套体系&#xff0c;下面就为大家详细介绍腾讯、阿里巴巴、百度内部的薪资等级情况。 一&#xff1a;腾讯 薪资、级别与晋升这一块&#xff0c;BAT一般全国采取的都是一套体系&#xff0c;下面就为大家详细介绍。 1…