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

app营销策略模板搜索引擎优化怎么做

app营销策略模板,搜索引擎优化怎么做,建设公益网站多少钱,做网站是否用数据库1. 题目链接:47. 全排列 II 2. 题目描述: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 输…

1. 题目链接:47. 全排列 II

2. 题目描述:

给定一个可包含重复数字的序列 nums按任意顺序 返回所有不重复的全排列。

示例 1:

输入:nums = [1,1,2]
输出:
[[1,1,2],[1,2,1],[2,1,1]]

示例 2:

输入: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 <= 8
  • -10 <= nums[i] <= 10

3. 解法:

3.1 算法思路:

因为题目不要求返回的排列顺序,因此我们可以对初始化状态排序,将所有相同的元素放在各自相邻的位置,方便之后操作。因此重复元素的存在,我们可以选择元素进行全排列时,可能会存在重复排列

  1. 我们可以将相同的元素按照排序后的下标顺序出现在排序中,通俗来讲,若元素s出现x次,则排序后的第2个元素s一定出现在第1个元素是后面,第3个元素s一定出现在第2个元素s后面,以此类推,此时的全排列一定不会出现重复结果
  2. 例如:a1=1,a2=1,a3=2,排序结果为[1,1,2]的情况只有一次,即a1在a2的前面,因为a2不会出现在a1前面从而避免了重复排列
  3. 我们在每一个位置上考虑所有可能情况并且不会重复
  4. 注意:若当前元素的前一个相同元素出现在当前状态中,则当前元素也不能直接放入当前状态的数组,此做法可以保证相同元素的排列顺序与排序后的相同元素的排序相同,即避免了重复排列出现
  5. 通过深度优先搜索的方法,不断地枚举每个数在当前位置的可能性,并在递归结束时回溯到上一个状态,直到枚举所有可能性,得到正确的结果

3.2 递归流程:

  1. 定义一个二维数组ret用来存放所有可能的排列,一个一维数组path用来存放每个状态的排列,一个一维数组check标记元素,然后从第一个位置开始进行递归

  2. 一个一维数组check标记元素,然后从第一个位置开始进行递归

  3. 在每个递归的状态中,我们维护一个步数pos,表示当前已经处理了几个数字

  4. 在每个递归状态中,枚举所有下标i,若这个下标未被标记,并且在它之前的相同元素被标记过,则使用nums数组中当前下标的元素:

    1. check[i]标记为1
    2. nums[i]添加至path数组末尾
    3. 对第 pos+1个位置进行递归
    4. check[i]重新赋值为0,并且删除path末尾元素表示回溯
  5. 最后,返回ret
    请添加图片描述

3.3 C++算法代码:

class Solution {vector<int> path; // 用于存储当前排列的路径vector<vector<int>> ret; // 用于存储所有满足条件的排列组合bool check[9]; // 用于记录每个元素是否已经被使用过public:vector<vector<int>> permuteUnique(vector<int>& nums) {sort(nums.begin(), nums.end()); // 对输入数组进行排序,以便后续剪枝操作dfs(nums, 0); // 调用深度优先搜索函数开始生成排列return ret; // 返回所有满足条件的排列组合}void dfs(vector<int>& nums, int pos) {if (pos == nums.size()) { // 如果已经遍历完所有元素,说明找到了一个合法的排列ret.push_back(path); // 将当前排列添加到结果中return;}for (int i = 0; i < nums.size(); i++) {// 剪枝操作:如果当前元素已经被使用过或者与前一个元素相同且前一个元素未被使用过,则跳过该元素if (!check[i] && (i == 0 || nums[i] != nums[i - 1] || check[i - 1])) {path.push_back(nums[i]); // 将当前元素添加到当前排列中check[i] = true; // 标记当前元素为已使用dfs(nums, pos + 1); // 继续递归生成下一个元素的排列path.pop_back(); // 回溯操作:移除当前元素,恢复上一层的状态check[i] = false; // 标记当前元素为未使用}}}
};
http://www.khdw.cn/news/17296.html

相关文章:

  • 用vs2013做网站登录2023疫情最新情况
  • 我想自己做网站吗微信营销推广公司
  • 国外大型购物网站全国新冠疫苗接种率
  • 中山专业做网站的公司厦门seo顾问屈兴东
  • 微信网络推广方案班级优化大师功能介绍
  • 公司企业邮箱怎么登录宁波seo推广
  • seo关键词推广案例仁茂网络seo
  • 天津网站建设有哪些整合网络营销外包
  • 个人可以做聊天网站备案吗交换链接网站
  • 电气毕业设计代做网站seo教学实体培训班
  • 网站建设08keji线下推广方案
  • 网站内容优化细节杭州网站优化公司哪家好
  • 网站推广技术哪家好北京做网站的公司有哪些
  • 浙江城乡建设网站网络营销推广合同
  • 网站计划任务怎么做惊艳的网站设计
  • 网站建设与维护税点小规模手机网站建设平台
  • 网站建设期末实践报告百度推广登录入口官网网
  • 网站宣传与推广谷歌sem推广
  • 广州旅游网站建设设计南通关键词优化平台
  • 做门户网站私活多少钱今天国内新闻
  • 网站规划步骤有哪些百度app下载官方免费最新版
  • 网站搭建的公司网站如何制作
  • 网页搜索的快捷键关键词优化公司排名榜
  • 做传媒网站公司今日疫情最新消息全国31个省
  • 学建筑的女生后悔吗提升seo排名平台
  • 电脑软件制作入门教程惠州seo排名优化
  • 房地产最新消息政策代表了什么外包seo服务口碑好
  • 重庆最专业的房产网站建设百度指数查询官网入口登录
  • 男和男做那个视频网站aso优化平台
  • 南昌高端网站定制seo全网优化推广