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

中国空间站图片绘画wordpress蜜蜂采集

中国空间站图片绘画,wordpress蜜蜂采集,wordpress js手工合并,邹平建设网站【题目描述】 给出集合 [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.pierceye.com/news/506069/

相关文章:

  • 网站开发需要逻辑吗线下编程课程收费标准
  • 网站的费用多少wordpress替换js为外部引用
  • 工业设备网站源码国家图书馆网站建设介绍
  • 南昌制作网站软件站长统计app软件
  • 商城网站建设公司哪家好上海环球金融中心简介
  • 肃宁县做网站价格wordpress获取站点标题
  • 公司做网站效果怎么样推荐网站建设话术
  • 邱县网站建设河北seo网络优化师
  • iis5.1怎么新建网站中国生意网
  • 教你做吃的网站厦门市集美区建设局网站
  • 电子商务网站建设需要青岛网站建设邓巴迪
  • 网站建设考虑的因素建设网站地图
  • 天津塘沽网站建设新网官方网站
  • 做本地团购网站国外产品网站
  • 湖北省两学一做网站国外浏览器app下载
  • 遵义网站建设公司巴彦淖尔市网站制作
  • 后台管理系统网站模板合作网站登录制作
  • 腾讯云网站备案流程seo优化实训总结
  • 那个网站有免费的模板wordpress首页模板文件
  • 阿里云主机可以放几个网站手机上自己设计广告的软件
  • 南通公司企业网站建设淘宝网店制作
  • 长沙网站建设推广太仓网站建设企业网站
  • 加强网站微信信息编辑队伍建设网站设计 北京店
  • 广州网站建设有限公司程序员入门先学什么
  • 资源下载类网站如何做外链北京有几家宽带网络公司
  • 个人网站要有什么网页设计与制作初学者教程
  • 宁波品牌网站建设芗城区建设局网站
  • 仿卢松松博客网站源码购买网站空间多少钱
  • 无锡网站推微信公众号文章里好看的图片在哪个网站做
  • 做网站建设费用预算龙岩市建筑设计院