这篇page是针对leetcode上的46.全排列所写的。小尼先简单的说明一下这道题的意思,首先就是给定一个不含重复数字nums,需要返回所有可能的全排列。

小尼先简单说明一下这道题的思路,其实就是给出特定的数组,需要返回对应的排列数组。小尼先拉一下代码:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();boolean[] used;public List<List<Integer>> permute(int[] nums) {if(nums.length == 0){return result;}used = new boolean[nums.length];permuteHelper(nums);return result;}private void permuteHelper(int[] nums){if(path.size() == nums.length){result.add(new ArrayList<>(path));return;}for(int i = 0;i < nums.length; i++){if(used[i]){continue;}used[i] = true;path.add(nums[i]);permuteHelper(nums);path.removeLast();used[i] = false;}}
}

小尼带着大家简单的分析一下这道题的代码以及思路,首先呢就是我们先需要知道这道题的要求,其实就是我们需要不断的组合,其实这道题给出的一个条件海事比较简单的,就是给出的我们的数组中没有重复的元素,所以我们在每一次递归放入元素的时候,起始我们只需要排除我们放入的元素不是我们的头元素即可,我们每次递归我们放入的元素都成了新的头元素,所以我们只需要将以及放入的元素做一个记录即可,这段代码中做出的记录即是一个布尔类型的判断,我们放入了某个元素,我们就将它在nums数组中对应元素的位置记录为1,如果没有放入,就是为0即可,所以上述我所写的代码,中:

if(used[i]){ continue; }这一句就是充分体现了这份道理,就是我们如果此时的used对应的元素中是1我们就跳过。

希望小伙伴可以得到帮助!!!

My Fifty-eighth - Page - 全排列 - By Nicolas相关推荐

  1. My Hundredth Page - 回文子串 - By Nicolas

    这篇page是针对leetcode上的647.回文子串所写的.小尼先简单的说明一下这道题的意思,就是给定一个字符串s,需要统计出这个字符串中回文子串的数目,回文子串的定义就是正着读和倒过来读是一样的字 ...

  2. My Seventh Page - 设计链表 - By Nicolas

    这一篇page对应的是leetcode上面707.设计链表这个题目,首先这个题目的描述还是比较简单的,就是我们可以选择使用单链表或者双链表实现链表对应的增删改查的许多功能.小尼这个题目大部分都是看的题 ...

  3. My Eighty-sixth Page - 买股票的最佳时机Ⅲ - By Nicolas

    这篇page是针对leetcode上的123.买股票的最佳时机Ⅲ所写的.小尼先简单的说明一下这道题的意思,就是我们给定一个数组,它的第i个元素表示的是一支股票在第i天的价格,我们需要设计一个算法表示我 ...

  4. My Eighty-seventh Page - 买卖股票的最佳时机 - By Nicolas

    这篇page是针对leetcode上的188.买卖股票的最佳时机Ⅳ所写的.小尼先简单的说明一下这道题的意思,就是我们给定一个整数数组prices,它的第i个元素prices[i]是一支给的股票在第i天 ...

  5. My Fourteenth Page - 两个数组的交集 - By Nicolas

    今天的这篇page针对的时leetcode上的349.两个数组的交集写的,小尼首先简单说明一下这道题的要求,给点两个数组nums1和nums2.,返回他们的交集,输出结果中的每个元素一定是唯一的. 首 ...

  6. My Twenty-Fourth - Page - 逆波兰表达式求值 - By Nicolas

    这篇page是针对leetcode上的150.逆波兰表达式这道题所写的,小尼先简单说明一下这道题的意思,这道题先是介绍了有效的运算符包括"+","-",&quo ...

  7. My Twenty-Eighth Page - 滑动窗口最大值 - By Nicolas

    这篇page是针对leetcode上的239.滑动窗口的最大值所写的.小尼先简单的说明一下这道题的题意,给出一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧,需要返回滑动 ...

  8. My Twentieth Page - 用栈实现队列 - By Nicolas

    这篇page是针对leetcode上的232.用栈实现队列这道题所写的,小尼先简单的说明一下这道题,就是利用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push.pop.peek.em ...

  9. My Ninetieth Page - 最长递增子序列 - By Nicolas

    这篇page是针对leetcode上的300.最长递增子序列所写的.小尼先简单的说明一下这道题的意思,给定一个整数数组nums,我们需要找到其中最长严格递增子序列的长度.其中子序列是由数组派生而来的序 ...

  10. My Eighty-ninth Page - 买卖股票的最佳时机含手续费 - By Nicolas

    这篇page是针对leetcode上的714.买卖股票的最佳时机含手续费所写的.小尼先简单的说明一下这道题的意思,就是给定一个整数数组prices,其中prices[i]表示第i天的股票价格,整数fe ...

最新文章

  1. c++ 11新特性总结_JDK1.8新特性Stream和Collectors19个常用示例总结
  2. ASP.NET MVC 入门11、使用AJAX
  3. 软件开发包(SDK)安全与合规报告(2020)
  4. word文本框跨页显示方法
  5. Ubuntu查看及修改IP地址
  6. 基于log4j的消息流的实现之一消息获取
  7. android 3.10. 内核,编译android 3.10内核源码时出错
  8. VS2010中查询替换使用
  9. HDU 3695 / POJ 3987 Computer Virus on Planet Pandora
  10. 测试管理工具【禅道】使用详解
  11. Python图像处理
  12. 微信读书十块钱一个月?分分钟搞定它!“白嫖”才是最香的!
  13. word一直提示“缓存凭据已到期,无法上载或下载你的更改”问题---登入了两个onedrive账号(一个是个人的,一个是学校教育版的)发现编辑word后,文本无法保存
  14. mac火狐浏览器不能打开任何网址问题解决方案!
  15. VSCode升级后启动不了~
  16. PHP laravel 生成二维码
  17. VM ESXI 服务器虚拟化资料积累
  18. css clientheight、offsetheight、scrollheight详解
  19. 微信unionid的获取踩到的坑
  20. VC++版论坛登陆器

热门文章

  1. MSR5560 路由器映射
  2. 三亚适合几月份去玩 三亚必去的地方是哪里
  3. 服务器打开网页图片显示红x,cacti无法显示图片,图片显红叉
  4. 计算机5克,C盘莫名其妙少了5个多G,这是怎么回事??
  5. Android 10去除电池图标以及设置
  6. 江苏卫视舞蹈演员机器人_百度机器人踢馆江苏卫视《芝麻开门》
  7. 黑苹果开机界面的启动项设置
  8. 智齿科技获投B轮融资5000万人民币
  9. ACProtect ——脱壳
  10. MySQL启动常见错误:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘