第k个数
来源:互联网 发布:c 数组截断 编辑:程序博客网 时间:2024/06/06 09:29
题目描述
有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。
给定一个数int k,请返回第k个数。保证k小于等于100。
测试样例:
算法:
使用3个队列分别保存着3的倍数,5的倍数,7的倍数。每次循环找到当前队头即最小值,这个值就是第n个所求数。
这个值出自哪个队列x,说明现在3个队列内的所有数的最小数是x的倍数,那么需要将所有队头继续扩大x倍,因为x倍的数最小了
key:3可以乘3,5,7队列,5可以乘5,7队列,7可以乘7队列。因为3乘了5,5就不需要乘3了
class KthNumber {public: int findKth(int k) { // write code here queue<int> que3; queue<int> que5; queue<int> que7; //init que3.push(3); que5.push(5); que7.push(7); //begin int count = 0; int key = 0; while (count < k){ int key3,key5,key7; if(!que3.empty()){ key3 = que3.front(); } else key3 = INT_MAX; if(!que5.empty()){ key5 = que5.front(); } else key5 = INT_MAX; if(!que7.empty()){ key7 = que7.front(); } else key7 = INT_MAX; key = min(min(key3,key5),key7); if(key == key3){ que3.push(key * 3); que5.push(key * 5); que7.push(key * 7); que3.pop(); } else if(key == key5){ que5.push(key * 5); que7.push(key * 7); que5.pop(); } else{ que7.push(key * 7); que7.pop(); } count++; } return key; }};
0 0
- 寻找第K个数
- 第k个数
- 第k个数
- 第k个数
- 第k个数
- 第k个数
- 找倒数第K个数
- 链表中倒数第k个数
- 求第k个数,最小的K个数
- 求n个数的第K小数
- ACM第K个数 C++实现
- 寻找最大的第K个数
- N个数,求第K大数
- 寻找最大的第K个数
- 寻找数组中的第k个数
- 寻找数组中的第k个数(序)
- 链表的倒数第K个数
- N个数,求第K大数
- D进制的A+B
- 仿微信聊天界面——键盘与面板的切换
- Glide源码分析1 - 框架
- HDU5785 Interesting
- 启动eclipse是报 no java virtual machine was found after searching the following location
- 第k个数
- dom4j解析xml字符串实例
- C/C++_扫雷
- dijit中选项卡容器TabContainer
- Python2 和 Python3 在 Windows 上共存方法
- Maven实战(六)--子模块的聚合和继承
- 用思维导图学语法
- JavaScript的可维护性
- 人工智能全局概览:通用智能的当前困境和未来可能