素数判断——数论
2023-02-18 16:26:27 时间
前言
今天的题还是有点难度的,毕竟剑指offer不是吃素的,我感觉这个题目应该十分接近蓝桥杯的难度了,或者是已经超过了蓝桥杯的难度,但是刷的题中题,方为人中人,发车了
解题报告
1.剑指offer49丑数 算是一个比较新的概念,我刚看这个题的时候,就只想到了暴力解法,循环判断,先写一个函数IsChou来判断是不是丑数,再从1开始递增找第1500位的丑数。
//暴力解法
#include<iostream>
using namespace std;
bool IsChou(int numbur)
{
while (numbur % 2 == 0)
numbur /= 2;
while (numbur % 3 == 0)
numbur /= 3;
while (numbur % 5 == 0)
numbur /= 5;
return numbur == 1 ? true : false;
}
int GetUglyNumbur(int n)
{
if (n <= 0)
return 0;
int numbur=0;
int uglyFound = 0;
while (uglyFound < n)
{
++numbur;
if (IsChou)
++uglyFound;
}
return numbur;
}
int main()
{
cout << GetUglyNumbur(1500);
return 0;
}
但是很遗憾没有拿满分,翻开我那几乎积灰的剑指offer,看到这个题是放到了用空间换时间的算法中,又想了想,之所以会超时,是因为上面的题解中计算了许多不是丑数的数据,再看丑数的定义是,应该是另一个丑数乘以2,3,5的结果,进行优化
int GetUglyNumber2(int n)
{
if (n <= 0)
return 0;
int *pUglyNumber = new int[n];
pUglyNumber[0] = 1;
int nextUglyNumber = 1;//下一个
int *pMulitiply2 = pUglyNumber;
int *pMulitiply3 = pUglyNumber;
int *pMulitiply5 = pUglyNumber;
while (nextUglyNumber < n)
{
int mmin = Min(*pMulitiply2 * 2, *pMulitiply3 * 3, *pMulitiply5 * 5);
pUglyNumber[nextUglyNumber] = mmin;
while (*pMulitiply2 * 2 <= pUglyNumber[nextUglyNumber])
++pMulitiply2;
while (*pMulitiply3 * 3 <= pUglyNumber[nextUglyNumber])
++pMulitiply3;
while (*pMulitiply5 * 5 <= pUglyNumber[nextUglyNumber])
++pMulitiply5;
}
int ugly = pUglyNumber[nextUglyNumber - 1];
delete[]pUglyNumber;
return ugly;
}
int Min(int number1, int number2, int number3)
{
int min = (number1 < number2) ? number1 : number2;
min = (min < number3) ? min : number3;
return min;
}
//来自剑指offer
相关文章
- 如何在 Java 中实现 Dijkstra 最短路算法
- 如何在 Java 中实现最小生成树算法
- 如何在 Java 中实现无向环和有向环的检测
- 如何在 Java 中实现无向图
- 如何在 Java 中实现二叉搜索树
- 如何在 Java 中实现堆排序算法
- 如何在 VS Code 中为 Java 类生成序列化版本号
- Freemarker-数字默认格式化问题
- Chrome扩展插件的开发--获取网页Cookies
- 【以解决】项目使用feign时候提示bean不能注入feign
- Docker设置容器开机自启
- 常用的淘汰算法
- 分布式事务seata,TCC,最大努力通知,最终一致性解决方案——总结三!
- java分布式事务——最终一致性,最大努力通知总结!
- java分布式事务——seata,tcc解决方案总结!
- 分布式系统–拜占庭将军问题(The Byzantine Generals Problem)
- idea中启动SSM项目
- 【编程】给定一个部门,变量出当前部门的所有父部门包含当前部门
- 【解疑】ConcurrentHashMap 在JDK1.7时候put或get时候,怎么定位到数据的?
- Spring的BeanFactoryPostProcessor