Hulu面试题解答——N位数去除K个数字(解法错误sorry)
给定一个N位数,比如12345,从里面去掉k个数字。得到一个N-k位的数。比如去掉2,4,得到135,去掉1,5。得到234。设计算法。求出全部得到的N-k位数里面最小的那一个。
写的代码例如以下,思路是通过堆排序得到N位数里边最大的前K个数,然后依照原数字的顺序去除得到的最大的K个数。
感觉写的非常乱,可能还有些小问题,鲁棒性应该非常差,努力锻炼。。努力提高。
typedef unsigned int uint;
//Heap adjust function
void HeapAdjust(uint *value, uint start, uint end)
{
for( int i=start; 2*i<=end; )
{
uint index = 2*i;
if(index+1<=end && value[index+1] > value[index])
index +=1;
if(value[index] > value[i])
{
uint temp = value[i];
value[i] = value[index];
value[index] = temp;
}
i = index;
}
}
//Heap creation function
void CreateHeap(uint *value, uint start, uint end)
{
uint middle = (start+end)/2;
for( uint i = middle;i>=start;i--)
{
HeapAdjust(value, i, end);
}
}
//Kick K numbers from N
uint KickK(uint N, uint K)
{
if(N>4294967295)
return 0;
uint i,tempN=N;
uint length=0;
uint value[10],outValue[10];
bool flag;
i = 1;
//get the numbers of N
while(tempN != 0)
{
value[i]=tempN%10;
outValue[i]=value[i];
tempN=tempN/10;
i++;
}
length = i-1;
//check the condition
if(K >= length)
return 0;
//Get the K biggest numbers, and store then in the last K positions in array value
CreateHeap(value,1,length);
for(i=0;i<K;i++)
{
uint temp = value[length-i];
value[length-i] = value[1];
value[1] = temp;
CreateHeap(value,1,length-i-1);
}
//output the remained numbers ,despite the K biggest numbers
for(i=length;i>=1;i--)
{
flag = true;
for(uint j=length+1-K;j<=length; j++)
{
if(outValue[i] == value[j])
flag = false;
}
if(flag)
printf("%d", outValue[i]);
}
return 1;
} int main()
{
uint N=61829;
uint K=3;
KickK(N,K);
}
Hulu面试题解答——N位数去除K个数字(解法错误sorry)的更多相关文章
- Hulu面试题
1.给定一个N位数,例如12345,从里面去掉k个数字,得到一个N-k位的数,例如去掉2,4,得到135,去掉1,5,得到234.设计算法,求出所有得到的N-k位数里面最小的那一个? 解决方案一:(1 ...
- 算法笔记_112:第五届蓝桥杯软件类省赛真题(Java本科B组)试题解答
目录 1 武功秘籍 2 切面条 3 猜字母 4 大衍数列 5 圆周率 6 奇怪的分式 7 扑克序列 8 分糖果 9 地宫取宝 10 矩阵翻硬币 前言:以下试题解答代码部分仅供参考,若有不当之处, ...
- 算法笔记_119:蓝桥杯第六届省赛(Java语言A组)试题解答
目录 1 熊怪吃核桃 2 星系炸弹 3 九数分三组 4 循环节长度 5 打印菱形 6 加法变乘法 7 牌型种数 8 移动距离 9 垒骰子 10 灾后重建 前言:以下试题解答代码部分仅供参考,若有 ...
- 算法笔记_108:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科A组)试题解答
目录 1 世纪末的星期 2 振兴中华 3 梅森素数 4 颠倒的价牌 5 三部排序 6 逆波兰表达式 7 错误票据 8 带分数 9 剪格子 10 大臣的旅费 前言:以下试题解答代码部分仅供参考,若有不 ...
- 算法笔记_109:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科B组部分习题)试题解答
目录 1 马虎的算式 2 黄金连分数 3 有理数类 4 幸运数 5 连号区间数 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 马虎的算式 标题: 马虎的算式 小明 ...
- 算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答
目录 1 猜年龄 2 组素数 3 第39级台阶 4 核桃的数量 5 打印十字图 6 买不到的数目 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题: ...
- 算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答
目录 1 猜年龄 2 李白打酒 3 神奇算式 4 写日志 5 锦标赛 6 六角填数 7 绳圈 8 兰顿蚂蚁 9 斐波那契 10 波动数列 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路 ...
- 算法笔记_120:蓝桥杯第六届省赛(Java语言B组部分习题)试题解答
目录 1 三角形面积 2 立方变自身 3 三羊献瑞 4 九数组分数 5 饮料换购 6 生命之树 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 三角形面积 三角形 ...
- 算法笔记_121:蓝桥杯第六届省赛(Java语言C组部分习题)试题解答
目录 1 隔行变色 2 立方尾不变 3 无穷分数 4 格子中输出 5 奇妙的数字 6 打印大X 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 隔行变色 隔行变色 ...
随机推荐
- js下firstElementChild firstChild 以及childNodes和children方法
一. <div> <p>123</p> </div> 在上面这段代码中,如果使用以下js代码 var oDiv=document.getElementB ...
- 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)
昨天介绍了mybatis与spring的整合,今天我们完成剩下的springmvc的整合工作. 要整合springmvc首先得在web.xml中配置springmvc的前端控制器DispatcherS ...
- Boost::thread库的使用
阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. ...
- Windows8 Metro快捷键 | Win8迷
Windows8 Metro快捷键 | Win8迷 Win + Q : 打开 搜索面板 Win + C : 打开屏幕右侧的Charms简化菜单 Win + 空格 : 切换输入语言和键盘布局
- php 实时汇率接口
function getExchangeRate($from_Currency,$to_Currency) { $amount = urlencode($amount); $from_Currenc ...
- uva 699
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #i ...
- .htaccess和license文件编写
1 .htaccess 1.1 文件的位置 默认情况下放置于根目录 1.2 .htaccess文件的编写 1.2.1 错误页面跳转 ErrorDocument + 错误码 + 跳转路径/提示文字 eg ...
- sublime搜索和替换--正则
Search and Replace Sublime Text features two main types of search: Search - Single File Search - Mul ...
- 禁用win7自己主动配置ipv4地址
现象 一台新电脑,连了网线,没有dhcp,须要手动配置Ip. 配置了一个Ip后,发现ping网关不通. ipconfig 发现有2 个IP: 自己主动配置 IPv4 地址 . . . . . . ...
- kgdb接收一个数据包详解
0 kdb>kgdb // 可进入kgdb 模式 if (dbg_kdb_mode) { error = kdb_stub(ks); } else ...