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

网站个人备案转企业备案东凤网站

网站个人备案转企业备案,东凤网站,合肥网络公司,装修公司加盟品牌【题目描述】 给出集合 [1,2,3,...,n]#xff0c;其所有元素共有 n! 种排列。按大小顺序列出所有排列情况#xff0c;并一一标记#xff0c;当 n 3 时, 所有排列如下#xff1a;123 、132 、213 、231、312、…【题目描述】 给出集合 [1,2,3,...,n]其所有元素共有 n! 种排列。按大小顺序列出所有排列情况并一一标记当 n 3 时, 所有排列如下123 、132 、213 、231、312、321。给定 n 和 k返回第 k 个排列。 示例 1     输入n 3, k 3     输出213 示例 2     输入n 4, k 9     输出2314     示例 3 输入n 3, k 1     输出123 提示     11 n 9     21 k n! 【题目链接】. - 力扣LeetCode 【解题代码】 package number;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.IntStream;public class GetPermutation {public static void main(String[] args) {//int n 4, k 9;int n 4, k 3;System.out.println(计算结果 new GetPermutation().getPermutation(n, k));}public String getPermutation(int n, int k) {// 生成1到n的数组int[] nums IntStream.range(1, n 1).toArray();// 运行K次获取下一个数字排列组合for (int i 0; i k - 1; i) {nextPermutation(nums);}// 最后将生成的整数数组结果转换成字符串return Arrays.stream(nums).mapToObj(String::valueOf).reduce((a, b) - a b).get();}private void nextPermutation(int[] nums) {// 从倒数第二个数开始尝试能够递增替换此数字依次向前推进int i nums.length - 2;Lable:for (; i 0; i--) {// 往后找比当前数大的数将两个数交换然后跳出整个循环for (int j nums.length - 1; j i; j--) {if (nums[i] nums[j]) {int tmp nums[i];nums[i] nums[j];nums[j] tmp;break Lable;}}}// 后面的数字从小到大排序即可Arrays.sort(nums, i 1, nums.length);}}【解题思路】 之前此题已经在博文LeetCode-60题排列序列解法一原创-CSDN博客中介绍了一种解法虽然提交成功但运行时长400多毫秒而且递归实现有些晦涩还有没有其它更加巧妙的方法呢本人苦苦思索拿着数字排列“31243142321432413412。。。“翻来覆去的去找其中的规律突然间真是灵光一闪发现如下真理每个数字排列的下一个排列就是从倒数第二个数字开始往后找到比此数大的数字两者进行交换然后再将后面的数字进行排序即可找不到的话向前推进。。。发现这么大的天机当下真是兴奋不已立马修改好代码运行提交LeetCode成功 【解题步骤】 定义一个递归回溯函数获取输入的数字集合下一个排列 private void nextPermutation(int[] nums) {。。。} 主函数里先初始化数字集合为最小排列序列然后对此数字集合取k-1次下一个排列然后返回结果即可 // 生成1到n的数组 int[] nums IntStream.range(1, n 1).toArray(); // 运行K次获取下一个数字排列组合 for (int i 0; i k - 1; i) {nextPermutation(nums); } // 最后将生成的整数数组结果转换成字符串 return Arrays.stream(nums).mapToObj(String::valueOf).reduce((a, b) - a b).get(); nextPermutation函数里i从倒数第二个数开始尝试能够递增替换此数字依次向前推进往后找比当前数大的数将两个数交换然后跳出整个循环 // 已经访问到数字集合尾部当前排列完成生成 序列号加1并返回 if (n nums.length) {return m 1; } 然后将后面的数字从小到大排序即可 Arrays.sort(nums, i 1, nums.length); 【思考总结】 算法实现精要每个数字排列的下一个排列就是从倒数第二个数字开始往后找到比此数大的数字两者进行交换然后再将后面的数字进行排序即可找不到的话向前推进。。。算法实现最好能精益求精不可浅尝辄止温故而知新比做新的算法题可能收获更大一定要有自己的原创算法思想不能一味按照公式去套那样的话就只是机械的应试刷题没有自己的灵魂没有自己的思想LeetCode解题之前一定不要看题解看了就“破功”了
http://www.zqtcl.cn/news/500697/

相关文章:

  • 网站策划的最终体现南宁网站建设培训学校
  • 网站不备案打不开怎么建网站不用买空间
  • 有没有IT做兼职的网站百度收录入口提交
  • 普洱市建设局网站重庆工程建设信息查询
  • 上海网站设计多少钱wap网站生成微信小程序
  • 广州网站到首页排名做图骂人的图片网站
  • 公司的网站建设价格wordpress付费阅读文章功能
  • 飞鸽网站建设建设网站什么软件比较好
  • 网站名称 规则网站seo完整seo优化方案
  • 昆明网站建设高端定制wordpress建站课程
  • 建网站外包wordpress 便利贴
  • 硅胶 技术支持 东莞网站建设网站互联网接入商
  • 太平洋建设21局网站微信网页版登录手机版
  • 站长统计芭乐鸭脖小猪电商平台哪个最好
  • 女与男爱做电影网站免费企业公司网站建设方案
  • 尚品本色木门网站是哪个公司做的大庆建设公司网站
  • 做网做网站建设的网站怎么用别人网站做模板
  • 电子商务网站购物车怎么做网站站点创建成功是什么意思
  • 如何做招聘网站的评估新浪微博可以做网站吗
  • 加强网站建设的制度wordpress如何清空
  • 轻松筹 的网站价格做网站建设意识形态
  • 有.net源码如何做网站湖南宣传片制作公司
  • dede网站模板怎么安装教程青岛需要做网站的公司
  • 静态双语企业网站后台源码北京网站关键词优化
  • 石家庄手机网站建设公司wordpress侧边栏显示子分类文字数
  • 公司网站客户案例个人做 网站2019
  • 个人网站怎么申请销售策划
  • 网站被黑 禁止js跳转企业为什么要建立集团
  • 建设网站的各种问题上海品牌女装排行榜前十名
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技商城网站备案能通过吗