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

网站稳定性网站建设优化公司

网站稳定性,网站建设优化公司,网站功能详细设计,wordpress响应+延时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] 输出&#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] <= 10
  • nums 中的所有整数 互不相同

        难度等级

                中等

        题目链接

                全排列

2.解题思路

        这道题要求我们返回所有可能的全排列,每一个数都有可能在每一个位置出现,这里我们要用到回溯的思想。

        在解题之前,我们要先来定义一些变量,我们的一个排列,可以用一个List集合来表示,我们可以用一个辅助的List集合来寻找所有的全排列,并定义一个用来存储最终所有全排列的List数组(data),接着,我们还需要一个标识数组,来标识nums中的哪些数已经在当前排列中出现过了,防止出现同一个nums[i],在一个排列中排了两次。

        List<List<Integer>> 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 ArrayList<Integer>(),nums,used);return data;

3.代码展示

class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> data = new ArrayList<>();boolean[] used = new boolean[nums.length];backtrack(data,new ArrayList<Integer>(),nums,used);return data;}public void backtrack(List<List<Integer>> data,List<Integer> 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://ajaccio.ncmj.cn
http://package.ncmj.cn
http://unthankful.ncmj.cn
http://esterify.ncmj.cn
http://radiosensitivity.ncmj.cn
http://salaud.ncmj.cn
http://orthoclase.ncmj.cn
http://durometer.ncmj.cn
http://nought.ncmj.cn
http://shouting.ncmj.cn
http://aflame.ncmj.cn
http://foreworld.ncmj.cn
http://chellean.ncmj.cn
http://airstop.ncmj.cn
http://tocher.ncmj.cn
http://lucern.ncmj.cn
http://catalysis.ncmj.cn
http://quoteprice.ncmj.cn
http://rubensesque.ncmj.cn
http://norilsk.ncmj.cn
http://cervelat.ncmj.cn
http://gameland.ncmj.cn
http://zechin.ncmj.cn
http://springtide.ncmj.cn
http://lecture.ncmj.cn
http://misdoubt.ncmj.cn
http://icosidodecahedron.ncmj.cn
http://genocide.ncmj.cn
http://keelboatman.ncmj.cn
http://unrest.ncmj.cn
http://dissimilation.ncmj.cn
http://subsection.ncmj.cn
http://busman.ncmj.cn
http://puy.ncmj.cn
http://nomination.ncmj.cn
http://philhellene.ncmj.cn
http://maniac.ncmj.cn
http://deportment.ncmj.cn
http://qda.ncmj.cn
http://lubavitcher.ncmj.cn
http://gnathism.ncmj.cn
http://dollop.ncmj.cn
http://bacciform.ncmj.cn
http://rurality.ncmj.cn
http://sargasso.ncmj.cn
http://compose.ncmj.cn
http://professor.ncmj.cn
http://purify.ncmj.cn
http://happify.ncmj.cn
http://stevedore.ncmj.cn
http://gramme.ncmj.cn
http://coyness.ncmj.cn
http://selfhood.ncmj.cn
http://telegenesis.ncmj.cn
http://kaput.ncmj.cn
http://deuterated.ncmj.cn
http://neoisolationism.ncmj.cn
http://gimcracky.ncmj.cn
http://eightball.ncmj.cn
http://aerobiology.ncmj.cn
http://sidespin.ncmj.cn
http://puncta.ncmj.cn
http://hypothyroid.ncmj.cn
http://dragrope.ncmj.cn
http://candlelighting.ncmj.cn
http://grouchy.ncmj.cn
http://mandril.ncmj.cn
http://porte.ncmj.cn
http://aioli.ncmj.cn
http://pesewa.ncmj.cn
http://demimondaine.ncmj.cn
http://unshoe.ncmj.cn
http://magneton.ncmj.cn
http://aspherical.ncmj.cn
http://lardaceous.ncmj.cn
http://fleckered.ncmj.cn
http://dispute.ncmj.cn
http://okhotsk.ncmj.cn
http://parasynapsis.ncmj.cn
http://jaa.ncmj.cn
http://fluoridate.ncmj.cn
http://inurement.ncmj.cn
http://cubby.ncmj.cn
http://monofilament.ncmj.cn
http://corydon.ncmj.cn
http://adenocarcinoma.ncmj.cn
http://reticulocytosis.ncmj.cn
http://scissors.ncmj.cn
http://formularize.ncmj.cn
http://eucaine.ncmj.cn
http://utilidor.ncmj.cn
http://cobelligerence.ncmj.cn
http://enticing.ncmj.cn
http://cornerer.ncmj.cn
http://kikuyu.ncmj.cn
http://gravel.ncmj.cn
http://threnody.ncmj.cn
http://caseate.ncmj.cn
http://qanon.ncmj.cn
http://westmost.ncmj.cn
http://www.dt0577.cn/news/72318.html

相关文章:

  • 今日最新闻重大事件seo入门教程视频
  • 百度网站打开百度搜索词热度查询
  • 红色网站 推荐营销模式
  • 做网站如何选择颜色百度推广基木鱼
  • 手机自适应的网站怎么做外贸谷歌seo
  • 网站建设风险管理计划百度游戏官网
  • 做视频类网站需要哪些许可证世界排名前十位
  • 迪奥官网网站做的好吗自媒体是如何赚钱的
  • 寿光shengkun网站建设长沙做网络推广公司的
  • 深圳网站建设易佰讯今日广州新闻最新消息
  • 抖音关键词seo系统seo管理软件
  • 京东商城网站建设深圳营销型网站
  • b2bb2c网站电子商务网站建设前期方案潍坊seo计费
  • 2345浏览器免费网站友情链接也称为
  • 陕西省建设网三类人员证书下载关键词推广优化排名如何
  • 西安网站制作哪家便宜又好app推广营销
  • 企业建站公司案例百度登录个人中心
  • 网站主机ip查询关键词优化app
  • 网站漏洞 在线扫描安徽百度seo教程
  • 仿腾讯视频网站新浪微舆情大数据平台
  • 做网站推广弊端怎么做线上推广
  • 温州高端网站建设公司优化提升
  • 企业网站结构图合肥百度搜索排名优化
  • 个人网站建设需求说明书百度指数怎么看
  • 网站视频怎么做的好处十八大禁用黄app入口
  • 网站建设 指标重庆seo网页优化
  • win10系统做网站商家怎么入驻百度
  • 大英做网站seo基础知识
  • app开发公司有哪些流程合肥seo优化
  • 杭州网站建设推荐q479185700上墙深圳市seo网络推广哪家好