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

leetcode46 Permutation 排列组合

题目要求

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

也就是得出所有可能的排列组合结果

解题思路和代码

这题显然采用递归的思路。例如,如果我们知道两个元素所有排列组合的结果,那么在该排列组合的结果上加入第三个元素,只需将第三个元素插入双元素排列组合结果的不同位置上即可以生成三个元素排列组合的结果。四个元素同理。
在这里,我采用LinkedList实现队列,从队列头获得上一组的结果,和当前元素结合之后,将结果插入到队尾。

    public List<List<Integer>> permute(int[] nums) {
        LinkedList<List<Integer>> result = new LinkedList<List<Integer>>();
        if(nums.length == 0){
            return result;
        }
        List<Integer> first = new LinkedList<Integer>();
        first.add(0, nums[0]);
        result.add(first);
        List<Integer> temp;
        for(int i = 1 ; i<nums.length ; i++){
            int number = nums[i];
            do{
                temp = result.removeFirst();
                for(int j = 0 ; j <=temp.size() ; j++){
                    temp.add(j, number);
                    result.add(new LinkedList<Integer>(temp));
                    temp.remove(j);
                }
            }while(result.getFirst().size() == i);
        }
        return result;
    }

clipboard.png
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

相关文章:

  • Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)
  • 无法抗拒Minecraft给予超高的自由度和探索-微访谈
  • 移动端播放视频文件
  • 《Spring 5官方文档》翻译邀请
  • 树莓派玩耍笔记1 -- 开箱 amp; 安装系统以及简单配置
  • Bzoj4161 Shlw loves matrixI
  • 《Spring Data 官方文档翻译》3. 其他帮助资源
  • rdiff-backup:一个 Linux 中的远程增量备份工具
  • 虚拟内存映射 段分割 vm_area_struct
  • springcloud-07-eureka HA的高可用配置
  • Mysql5.7 基目录没有data文件夹 解决方法
  • iOS开发 - 不进入待机(屏幕保持唤醒)---UIApplication学习
  • 利用OpenStreetMap(OSM)数据搭建一个地图服务
  • 定时备份文件下的文件包括子文件和父文件到指定目
  • 《Java特种兵》1.5 功底补充
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 2019.2.20 c++ 知识梳理
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • FineReport中如何实现自动滚屏效果
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux中的硬链接与软链接
  • magento 货币换算
  • Map集合、散列表、红黑树介绍
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python3爬取英雄联盟英雄皮肤大图
  • Vim 折腾记
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 力扣(LeetCode)21
  • 码农张的Bug人生 - 见面之礼
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前嗅ForeSpider采集配置界面介绍
  • 使用SAX解析XML
  • 微信公众号开发小记——5.python微信红包
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (1)bark-ml
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)scrum常见工具列表
  • (转)甲方乙方——赵民谈找工作
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net反编译的九款神器
  • @angular/cli项目构建--Dynamic.Form
  • @Transactional类内部访问失效原因详解
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • []FET-430SIM508 研究日志 11.3.31
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [C# 网络编程系列]专题六:UDP编程