当前位置: 首页 > news >正文

威海高区建设局网站广州越秀建网站的公司

威海高区建设局网站,广州越秀建网站的公司,去哪里投诉百度公司,网站搭建类型给定一个不含重复数字的整数数组 nums #xff0c;返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 1#xff1a; 输入#xff1a;nums [1,2,3] 输出#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 1 nums.length 6 -10 nu…给定一个不含重复数字的整数数组 nums 返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 1 输入nums [1,2,3] 输出[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 1 nums.length 6 -10 nums[i] 10 nums 中的所有整数 互不相同 解法一直接使用STL class Solution { public:vectorvectorint permute(vectorint nums) {// next_permutation函数每次产生下一个排列// 下一个排列的含义是按字典顺序下一个更大的排列// 因此需要先对nums进行从小到大排序sort(nums.begin(), nums.end());vectorvectorint ans;do {ans.push_back(nums);} while (next_permutation(nums.begin(), nums.end()));return ans;} };如果输入数组大小为n此算法时间复杂度为On*n!空间复杂度为O1。next_permutation函数的时间复杂度最多为On。 解法二回溯法遍历某个排列的每一个元素当遍历到下标i时我们遍历所有可以放到下标i的元素但有些元素在前面已经用过了因此我们维护一个visited数组如果该元素没有用过才放到下标i class Solution { public:vectorvectorint permute(vectorint nums) {vectorvectorint ans;unordered_setint visited;vectorint current;backtrack(0, current, nums, visited, ans);return ans;}private:void backtrack(int pos, vectorint current, vectorint nums, unordered_setint visited, vectorvectorint ans) {int sz nums.size();if (pos sz) {ans.push_back(current);}for (int i 0; i sz; i) {if (visited.find(nums[i]) ! visited.end()) {continue;}visited.insert(nums[i]);current.push_back(nums[i]);backtrack(pos 1, current, nums, visited, ans);current.pop_back();visited.erase(nums[i]);}} };如果输入数组大小为n此算法时间复杂度为On*n!空间复杂度为On。backtrack函数的调用次数为On!每次调用中会循环n次。对于空间复杂度递归深度为n主要开销是栈空间开销和current、visited数组开销。 解法三在解法二中我们使用了visited数组来标记哪些元素已经被全排列过了我们可以直接修改nums数组当遍历到下标i时我们可以令[0,i]的所有元素都是已经全排列过的元素具体做法是将当前循环中要排列的元素和下标为i的元素交换 class Solution { public:vectorvectorint permute(vectorint nums) {vectorvectorint ans;backtrack(0, nums, ans);return ans;}private:void backtrack(int pos, vectorint nums, vectorvectorint ans) {int sz nums.size();if (pos sz) {ans.push_back(nums);}for (int i pos; i sz; i) {swap(nums[i], nums[pos]);backtrack(pos 1, nums, ans);swap(nums[i], nums[pos]);}} };如果输入数组大小为n此算法时间复杂度为On*n!空间复杂度为On。backtrack函数的调用次数为On!每次调用中会循环n次。对于空间复杂度递归深度为n主要开销是栈空间开销。
http://www.hkea.cn/news/14560768/

相关文章:

  • 网站建设 软件企业东莞网站优化指导
  • 如何建立网站空间qq邮件网站建设的模块
  • 做网站上饶游戏道具网站开发
  • 设计自学网站哪个好有没有免费做片头的网站
  • 网站管理助手3.0asp.net 4.0网站开发与项目实战
  • 建筑设计专业的网站手机主题制作网站
  • 做网站用什么软件知乎wordpress能用的插件吗
  • 优秀的网站设计图片网站流量用完了
  • 阿三做网站京津冀协同发展规划纲要全文
  • 西安网站seo技术厂家网站建设零基础
  • 南通网站建设小程序国外游戏商城网站欣赏
  • 桂林网站设计wordpress博客站搭建
  • 珠海斗门建设局网站专业的企业级cms建站系统
  • 小地方做外卖网站怎样网站建设和网络推广服务公司
  • 培训学校地址网站建设wordpress 卡片插件
  • 太原制作网站wordpress添加数据库文件夹
  • 做杂志的网站可以做微网站的第三方平台
  • 关于网站建设的简历小红书推广计划
  • 长沙知名网站wordpress follow
  • vk网站做婚介网站后台更新图片
  • 珠海市住房城乡建设局网站宁波网站推广厂家电话
  • 哪个网站可以做艺术字做网站用什么cms 知乎
  • 做外贸最好的网站有哪些php开发手机网站
  • golang 网站开发做网站 什么语言好
  • 淘宝是什么语言做的网站苏州互联网公司多吗
  • 南宁做网站优化项目网站
  • 哈尔滨公司网站建设生成二维码在线生成器
  • 中小型企业网站建设与推广重庆网站建设方案书
  • 广州网站开发定制公司中国建设工程质量安全管理协会网站
  • 网站维护费一年多少钱建设电子书阅读网站