Hulu面试题解答——N位数去除K个数字(解法错误sorry)
2015-12-28 19:55
441 查看
给定一个N位数,比如12345,从里面去掉k个数字。得到一个N-k位的数。比如去掉2,4,得到135,去掉1,5。得到234。设计算法。求出全部得到的N-k位数里面最小的那一个。
写的代码例如以下,思路是通过堆排序得到N位数里边最大的前K个数,然后依照原数字的顺序去除得到的最大的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); }
相关文章推荐
- 前端面试集锦——CSS篇
- 前端开发面试题——HTML篇
- 大龄程序员的未来在何方
- 【面试题】:两水桶倒水问题
- 【面试题】:统计一串字符串中仅出现一次的第一个字符
- 前端开发面试题——HTML篇
- C#程序员经常用到的10个实用代码片段
- 互联网思维之求职信,百战百胜
- 程序员减压放松的十个网站
- 黑马程序员——Java之集合框架工具类Collections、Arrays以及Java新特性
- Java程序员必须掌握的8大排序算法
- 【转】MYSQL DBA知识了解-面试准备
- 闲着没事做:程序员的核心竞争力是什么?为什么?
- 培训机构毕业的程序员被歧视的背后逻辑
- 作为码农,我们为什么要写作
- 【备战面试之】三、依赖注入是什么?
- 近5年133个Java面试问题列表
- 大龄程序员的未来在何方
- Java 程序员们值得一看的好书推荐
- SQL Server DBA面试知识点(二)-- Recovery Mode