Cracking the Coding Interview 10.7
Design an algorithm to find the kth number such that the only prime factors are 3,5 and 7
方法一:
a[i]=min{a[s1]*3,a[s2]*5,a[s3]*7};
s1<i,s2<i,s3<i && a[s1]*3>a[i-1],a[s2]*3>a[i-1],a[s3]*7>a[i-1]
时间复杂度O(n^2)
#include<stdio.h> int min(int a,int b,int c)
{
int smallest = a<b?a:b;
smallest = smallest<c?smallest:c;
return smallest;
} int func(int k)
{
int m3=;
int m5=;
int m7=;
int *p = new int[k+];
p[]=;
for(int i=;i<=k;i++)
{
for(int j=;j<i;j++)
{
if(p[j]*>p[i-])
{
m7=p[j]*;
break;
}
}
for(int j=;j<i;j++)
{
if(p[j]*>p[i-])
{
m5=p[j]*;
break;
}
}
for(int j=;j<i;j++)
{
if(p[j]*>p[i-])
{
m3=p[j]*;
break;
}
}
p[i]=min(m3,m5,m7);
}
int r = p[k];
delete[] p;
p = NULL;
return r;
} int main()
{
int k=;
printf("%dth:%d\n",k,func(k));
return ;
}
方法二:
将1填入输出数组的第一位,然后准备三个队列Q3,Q5,Q7,分别压入1*3,1*5,1*7
第i位就是三个队列的队首元素中最小的,然后将该元素从队列取出:
如果是从Q3取出,则将该数分别乘以3,5,7,再将三个数分别插入到Q3,Q5,Q7队尾
如果是从Q5取出,则将该数分别乘以5,7,再将两个数分别插入到Q5,Q7队尾
如果是从Q7取出,则将该数乘以7,再将结果插入到Q7队尾
直到取出第K+1位(1不算)
时间复杂度O(n)
#include<iostream>
#include<deque> using namespace std; int func(int k)
{
deque<int>Q3;
deque<int>Q5;
deque<int>Q7;
int pi=;
Q3.push_back();
Q5.push_back();
Q7.push_back();
for(int i=;i<k+;i++)
{
if(Q3.front()<Q5.front() && Q3.front()<Q7.front())
{
pi=Q3.front();
Q3.pop_front();
Q3.push_back(*pi);
Q5.push_back(*pi);
Q7.push_back(*pi);
}
else if(Q5.front()<Q3.front() && Q5.front()<Q7.front())
{
pi=Q5.front();
Q5.pop_front();
Q5.push_back(*pi);
Q7.push_back(*pi);
}
else if(Q7.front()<Q3.front() && Q7.front()<Q5.front())
{
pi=Q7.front();
Q7.pop_front();
Q7.push_back(*pi);
}
else
{
cout<<"error"<<endl;
}
}
return pi;
} int main()
{
for(int k=;k<;k++)
{
cout<<k<<"th:"<<func(k)<<endl;
}
return ;
}
Cracking the Coding Interview 10.7的更多相关文章
- Cracking the Coding Interview(Trees and Graphs)
Cracking the Coding Interview(Trees and Graphs) 树和图的训练平时相对很少,还是要加强训练一些树和图的基础算法.自己对树节点的设计应该不是很合理,多多少少 ...
- Cracking the Coding Interview(Stacks and Queues)
Cracking the Coding Interview(Stacks and Queues) 1.Describe how you could use a single array to impl ...
- 《Cracking the Coding Interview》读书笔记
<Cracking the Coding Interview>是适合硅谷技术面试的一本面试指南,因为题目分类清晰,风格比较靠谱,所以广受推崇. 以下是我的读书笔记,基本都是每章的课后习题解 ...
- Cracking the coding interview
写在开头 最近忙于论文的开题等工作,还有阿里的实习笔试,被虐的还行,说还行是因为自己的水平或者说是自己准备的还没有达到他们所需要人才的水平,所以就想找一本面试的书<Cracking the co ...
- Cracking the coding interview 第一章问题及解答
Cracking the coding interview 第一章问题及解答 不管是不是要挪地方,面试题具有很好的联系代码总用,参加新工作的半年里,做的大多是探索性的工作,反而代码写得少了,不高兴,最 ...
- Cracking the coding interview目录及资料收集
前言 <Cracking the coding interview>是一本被许多人极力推荐的程序员面试书籍, 详情可见:http://www.careercup.com/book. 第六版 ...
- 《Cracking the Coding Interview》——第18章:难题——题目10
2014-04-29 04:22 题目:给定一堆长度都相等的单词,和起点.终点两个单词,请从这堆单词中寻找一条变换路径,把起点词变成终点词,要求每次变换只能改一个字母. 解法:Leetcode中有Wo ...
- 《Cracking the Coding Interview》——第17章:普通题——题目10
2014-04-28 23:54 题目:XML文件的冗余度很大,主要在于尖括号里的字段名.按照书上给定的方式进行压缩. 解法:这题我居然忘做了,只写了一句话的注解.用python能够相对方便地实现,因 ...
- 《Cracking the Coding Interview》——第13章:C和C++——题目10
2014-04-25 20:47 题目:分配一个二维数组,尽量减少malloc和free的使用次数,要求能用a[i][j]的方式访问数据. 解法:有篇文章讲了六种new delete二维数组的方式,其 ...
随机推荐
- 一个ROS的服务,使机器人向前移动指定距离
源代码有点长,放文末链接里了. 服务描述及代码现在的服务是:请求时携带要前进的距离,然后底盘前进相应距离.代码如下,改动很小: #!/usr/bin/env python import rospyfr ...
- Lua操作符的优先级
lua 操作符的优先级 lua操作符的优先级 如表所示(从高到低) 在二元操作符中,除了指数操作符 “^” 和连接操作符 “..” 是 ”右结合” 的,是所有其他操作符都是 “左结合” 的.因此如 ...
- Linux之iptables(一、防火墙的概念)
防火墙的概念 一.安全技术 入侵检测与管理系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化.定位来自内外网络的威胁情况,主要以提供报告和事后监督为主,提供 ...
- 洛谷 3391 【模板】文艺平衡树 Treap区间翻转
[题解] 用Treap维护这个序列. 加入的时候直接插入到末尾,这样Treap就变成一棵以插入时间先后为排序关键字的二叉搜索树. 对于翻转操作,我们分裂出需要翻转的区间,给这个区间的root打一个翻转 ...
- 关于python字符串format的一些花式用法
目录: 基础 实战 前提: python中字符串的format功能非常强大,可以说完全能够替代其他的字符串使用方法,但是在后期的项目开发中使用的并不是特别的多, 以至于想用的时候会想不起来准确的使用方 ...
- ansible使用jinja2管理配置文件以及jinja2语法简介
一.Jinja2介绍 Jinja2是基于python的模板引擎,功能比较类似于PHP的smarty,J2ee的Freemarker和velocity.它能完全支持unicode,并具有集成的沙箱执行环 ...
- EXt js 学习笔记总结
1. get . fly. getCmp .getBody .getDoc .getDom.. get-----ExtJs获取节点.dom.提供缓存机制 Ext.Element类是Ext对DO ...
- Skia图片解码模块流程分析
我在在PPAPI插件中使用Skia画图中说能够在PPAPI插件内使用Skia来画图.这里面会有一个与色彩空间(像素格式)相关的问题.在那篇文章里我们在PPAPI中使用PPB_ImageData创建2D ...
- Cookie && Session && Token
Cookies Cookie的由来: HTTP 本身是一个无状态的 request/response 协议. server接收一个来自client的request, 处理完以后返回一个response ...
- SolrCloud 分布式集群部署步骤
https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...