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

曲靖网站建设南宁模板网页制作

曲靖网站建设,南宁模板网页制作,重庆做的好的房产网站,百度seo如何优化关键词1.问题描述 给定一个不含重复数字的数组 nums #xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 示例1 输入#xff1a;nums [1,2,3] 输出#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2 输入#xff1a;nums [0,1] 输出#xf…1.问题描述 给定一个不含重复数字的数组 nums 返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 示例1 输入nums [1,2,3] 输出[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2 输入nums [0,1] 输出[[0,1],[1,0]] 示例3 输入nums [1]输出[[1]] 提示 1 nums.length 6-10 nums[i] 10nums 中的所有整数 互不相同 难度等级 中等 题目链接 全排列 2.解题思路 这道题要求我们返回所有可能的全排列每一个数都有可能在每一个位置出现这里我们要用到回溯的思想。 在解题之前我们要先来定义一些变量我们的一个排列可以用一个List集合来表示我们可以用一个辅助的List集合来寻找所有的全排列并定义一个用来存储最终所有全排列的List数组(data)接着我们还需要一个标识数组来标识nums中的哪些数已经在当前排列中出现过了防止出现同一个nums[i]在一个排列中排了两次。 ListListInteger data new ArrayList();boolean[] used new boolean[nums.length]; 这道题我们可以编写一个递归回溯的方法来找到所有的排列。 递归的结束条件是当辅助List的个数等于nums数组的个数时说明所有的数都已经拿出来进行排列了已经得到一个新的排列这时创建一个新的List将辅助数组的元素存入新的List中再将List存入最终用来存储所有全排列的List集合中然后直接返回即可。 //如果list的大小 nums的个数,说明得到一个排列if(list.size() nums.length){//添加新的排列data.add(new ArrayList(list));return;} 正常的递归逻辑也很简单用一个for循环对nums数组进行遍历先判断当前的数是否已经在辅助List排列了如果已经在List中排列则跳过这一个数。 //遍历nums数组,将还没排列的数字取出来进行排序for(int i 0;i nums.length;i){//已经被用过的数直接跳过if(used[i] true){continue;}......} 如果还没有在参与排列则将标记改为true并添加到辅助List中参与排列接着递归调用当前方法继续进行查找。找到包含当前子排列的所有排列之后我们还需要对当前的排列进行回溯将标记重新改回false并将当前对应的这个数从辅助list中取出防止对后面的排列造成影响。 //遍历nums数组,将还没排列的数字取出来进行排序for(int i 0;i nums.length;i){......//标记为已使用used[i] true;//添加到当前的排列中list.add(nums[i]);//递归backtrack(data,list,nums,used);//回溯list.remove(list.size()-1);used[i] false;} 当递归方法完全执行完成之后直接将用来存储全排列的List集合(data)返回即可。 backtrack(data,new ArrayListInteger(),nums,used);return data; 3.代码展示 class Solution {public ListListInteger permute(int[] nums) {ListListInteger data new ArrayList();boolean[] used new boolean[nums.length];backtrack(data,new ArrayListInteger(),nums,used);return data;}public void backtrack(ListListInteger data,ListInteger list,int[] nums,boolean[] used){//如果list的大小 nums的个数,说明得到一个排列if(list.size() nums.length){//添加新的排列data.add(new ArrayList(list));return;}//遍历nums数组,将还没排列的数字取出来进行排序for(int i 0;i nums.length;i){//已经被用过的数直接跳过if(used[i] true){continue;}//标记为已使用used[i] true;//添加到当前的排列中list.add(nums[i]);//递归backtrack(data,list,nums,used);//回溯list.remove(list.size()-1);used[i] false;}} } 4.总结 这道题没什么太大的难度采用回溯递归的方法穷尽所有的排列可能让每一个数在每一个位置都出现一次。好了这道题没啥好啰嗦的祝大家刷题愉快早日上岸
http://www.w-s-a.com/news/948518/

相关文章:

  • 做期货看资讯什么网站好哈尔滨网站设计联系方式
  • 建站宝盒免费下载上海网论坛网址
  • 国内最有趣的25个网站推广流程
  • 红河做网站抖音小程序怎么挂到抖音上
  • 高度重视机关门户网站建设外包
  • 网站里面送礼物要钱怎么做代码网站开发怎么对接客户
  • 泰州网站制作策划如何做网站需求
  • 门户网站优化报价软件技术公司
  • 怎样换网站logo公司名字大全集免费
  • 为网站网站做推广各类最牛网站建设
  • 网站用自己的电脑做服务器佛山做网站制作公司
  • 一个网站如何做cdn加速器如何上传网站数据库
  • 汝州住房和城乡建设局新网站营销网站定位
  • yy直播官网seo引擎优化是什
  • 做影视网站违法莫品牌营销是什么
  • 全网最稳最低价自助下单网站wordpress电影网站主题
  • 域名更换网站温州建设工程网站
  • 网站如何优化推广连锁店管理网站开发
  • 伊宁市做网站功能性质网站
  • 北京哪个网站制作公司优化大师免费安装下载
  • 同江佳木斯网站设计做网站联系电话
  • 设计上海展会2023seo网站模板下载
  • 开发一个卖东西的网站多少站长工具永久
  • 公司网站怎么突然多了好多友情链接如何删除宁波有几个区
  • 临沂seo网站推广wordpress新编辑器
  • c2c网站设计店面logo设计制作
  • 网站建设任务执行书重庆今天新闻事件
  • 怎样发布自己的网站南宁制作网站公司
  • wordpress装多站点百度查一下
  • 怎么优化一个网站搭建网站免费空间