Python实训作业,python程序设计实训报告总结

  Python实训作业,python程序设计实训报告总结

  丑数问题及变种综述

  发表声明

  1判断丑的数量

  因子只包含2、3、5的数字称为丑号,1作为初始丑号用于面试。

  lint代码517 uglynumbersegmentfault

  指剑锋题34的丑号排列。

  解决方法:参考剑指的报价,将判断对象按2、3、5的顺序连续划分,最后得到1,证明数字难看;使最优化

  //*

  *按照2、3、5的顺序划分判断(2、3、5的顺序判断时间最好))))))))))))))。

  * http://www . lint code.com/zh-cn/problem/ugly-number

  *题目:判断一个数字丑不丑。

  * @作者yzwall

  */

  类别解决方案{

  publicbooleanisugly(intnum ) {

  if(num==0)(

  假的;

  () ) ) ) )。

  if(num==1) {

  返回true

  () ) ) ) )。

  wile(num%2==0) {

  num/=2;

  () ) ) ) )。

  wile(num%3==0) {

  num/=3;

  () ) ) ) )。

  wile(num%5==0) {

  num/=5;

  () ) ) ) )。

  返回数==1?真:假;

  () ) ) ) )。

  () ) ) ) )。

  求2k丑数。

  lintcode 4丑陋的数字iies5

  剑锋指题34丑数扩充。网

  丑陋数字推理

  根据丑数的定义,推论如下。

  取任意难看的数字$m$并记录$m2=mtimes2$,$m3=mtimes3$,$ m5=mtimes5 $代码。

  $m2$,$m3$和$m5$一定是丑陋的博客。

  如果$m$是当前的$n$丑数,则$m2$、$m3$和$m5$的最小值必须是$n 1$丑数。长队

  2.1解决方案1:o(nlogn)$时间复杂度

  丑号推理的结果显示,当前的$n$丑号保存在PriorityQueue的开头,使用哈希表HashSet保证优先级队列中的丑号不重复。

  //*

  *标题:找到第n个丑陋的数字

  * http://www . lint code.com/zh-cn/problem/ugly-number-ii

  *解1:优先级队列HashSet解,时间复杂度O(nlogn)

  * @作者yzwall

  */

  类别解决方案13 {

  publicinnthuglynumber(intn){

  priorityqueuepq=newpriorityqueue(n,新的比较器) )

  上市公司(龙o2,龙o2) {

  返回o1 o2?-1 : 1;

  () ) ) ) )。

  );

  HashSet hash=new HashSet(;

  hash . add(1L);

  PQ。申办(1L);

  int [ ] primes=new int [ ] { 2,3,5 };

  进入主程序3360主程序(for) {

  hash . add()long)prime;

  pq . offer())long)prime;

  () ) ) ) )。

  Min=素数[0];

  for(intI=0;I n;I ) {

  //min第11个丑号总是由优先级队列保证

  min=pq . poll(;

  进入主程序3360主程序(for) {

  如果(!hash.contains(min*prime ) }

  hash . add(min * prime);

  //HashSet保证优先级队列中没有重复的丑号。

  pq . offer(min * prime);

  () ) ) ) )。

  () ) ) ) )。

  () ) ) ) )。

  return(int)min;

  () ) ) ) )。

  () ) ) ) )。

  2.2解决方案2:o(n)$时间复杂度

  根据丑数推理,与方案2.1相比,

  对于当前的$n$丑数$m$来说,会找到第一个超过$m$的$m2$、$m3$和$m5$,其中最小的一定是$n 1$丑数。

  用数组保存生成的丑数,避免使用优先级队列和哈希表,将时间复杂度优化到$o(n) $,而空间复杂度仍然是$o)) n) $

  部分代码参考了报价面问题34的丑数展开。

  找3k自定义丑号。

  自定义丑数的定义是正整数,所有素数因子都在一组给定大小为k的素数中。

  如果素数集合指定为[2,7,13,19],[1,2,4,7,8,13,14,16,19,26,28,32]将是前12个超级丑的数。

  自定义丑数是广义丑数,丑数的素数集合指定为[2,3,5]

  lintcode 518 siper丑号

  3.1解决方案1:o(nlogn)$时间复杂度

  丑数推理,可以扩展到自定义丑数:

  取任意自定义丑数$m$并指定$primes[]$,${m}_{i}=mtimes primes[i],i=0,1,2,primes.length-1$

  ${m}_{i}$必须是自定义的难看数字;

  如果$m$是当前的$n$丑数,则${m}_{i}$的最小值必须是$n 1$丑数。

  以上推理结果表明,当前$n$ th自定义丑号保存在PriorityQueue的开头,哈希表HashSet保证优先级队列中的自定义丑号不重复;

  //*

  *标题:找到第n个自定义丑号。

  * http://www . lint code.com/zh-cn/problem/super-ugly-number

  *解法1 :优先队列哈希特求解、时间复杂度o(nlogn),空间复杂度o (n)。

  * @作者yzwall

  */

  类解决方案{

  publicinnthsupuglynumber(intn,int[]素数).

  priorityqueuepq=newpriorityqueue(n,新的比较器) )

  公共公司(长氧气,长o2 ) {

  返回o1 o2?-1 : 1;

  () ) ) ) )。

  );

  HashSet hash=new HashSet(;

  哈希。添加(1L);

  PQ .出价(1L);

  输入主程序3360主程序(for ) {

  哈希。加()长)素数;

  pq。offer())long)prime;

  () ) ) ) )。

  长最小值=素数[0];

  for(intI=0;I n;I ) {

  min=pq。poll(;

  输入主程序3360主程序(for ) {

  如果(!hash.contains(min*prime ) }

  哈希。add(min * prime);

  pq。offer(min * prime);

  () ) ) ) )。

  () ) ) ) )。

  () ) ) ) )。

  返回(int)min;

  () ) ) ) )。

  () ) ) ) )。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 浅谈python程序的错误-变量未定义的原因,浅谈python程序的错误-变量未定义为
  • 浅谈python程序的错误-变量未定义的原因,浅谈python程序的错误-变量未定义为,浅谈Python程序的错误-变量未定义
  • Python程序设计与算法基础教程,python算法指南
  • Python程序设计与算法基础教程,python算法指南,Python常用算法学习基础教程
  • ,,8个实用的Python程序你知道几个
  • python程序打包成exe可执行文件,python程序打包成exe后的 运行速度
  • python流程管理,Python程序开发流程
  • Python程序开发案例教程,python程序设计案例实践教程
  • python编程基础与案例集锦,python程序代码实例
  • python程序设计实例教程董付国课后答案,python程序设计第三版董付国
  • 如果在python程序中没有导入相关模块,python外部模块不用导入可以直接使用
  • Python程序语言设计基础,Python编程设计
  • python程序语言的特点,Python编程的特点
  • python程序编写,python编程求素数
  • python向服务器发送数据,python程序如何在服务器部署
  • 留言与评论(共有 条评论)
       
    验证码: