金山云笔试,结构体函数
来源:互联网 发布:flash软件百度云 编辑:程序博客网 时间:2024/06/17 05:32
今天做了金山云的笔试,最后一道题结构体函数写了个链表很low,所以在这里写个较完善的。
1、设计一个结构体Data,要求AddData(int x)可以实现插入一个正整数
2、设计函数Double midData()返回数据结构中的中位数,如果元素个数为基数返回中间值,如果为偶数返回中间两个数的平均值。
(好似有三问,其中一问是设计数据结构。。。)
struct DATA{//数据结构中添加一个结构体函数 vector<int> num; void AddData(int x);};void DATA::AddData(int x){//结构体函数 num.push_back(x);}void quicksort(vector<int> &ss,int tail,int head){//使用快排将数组中的数排序 int i,j; i=tail;j=head; if(i>=j) return; int tmp=ss[i]; while(i<j){ while(i<j&&ss[j]>tmp) j--; if(i<j) ss[i]=ss[j]; while(i<j&&ss[i]<tmp) i++; if(i<j) ss[j]=ss[i]; } ss[i]=tmp; quicksort(ss,tail,i); quicksort(ss,i+1,head);}double midData(vector<int > ss){//找中位数 int n=ss.size(); if(n%2==0) return (ss[n/2-1]+ss[n/2])/2.0; if(n%2==1) return ss[n/2-1];}int _tmain(int argc, _TCHAR* argv[]){ DATA first; for(int i=10;i>0;i--) first.AddData(i); vector<int> tmpnum=first.num; quicksort(tmpnum,0,tmpnum.size()-1); cout<<midData(tmpnum);}
返回值5.5
经过小伙伴点拨,发现这种方法更好故贴出来
使用堆来实现数据的存储,一个大顶堆,一个小顶堆
class Solution {public: struct Data{ priority_queue<int> less;//小顶堆 priority_queue<int,vector<int>, greater<int> > max;//大顶堆 }s; void Insert(int num) { int tmp; if(count%2==0){//为偶数时先存入小顶堆,在把小顶堆的top push 大顶堆 s.less.push(num); tmp=s.less.top(); s.less.pop(); s.max.push(tmp); } else if(count%2==1){//为偶数时先存入大顶堆,在把大顶堆的top push 小顶堆 s.max.push(num); tmp=s.max.top(); s.max.pop(); s.less.push(tmp); } count++; }//为什么要这么分呢,这样保证了小顶堆中都是大于等于中位数值,且top为所有值中最小的//同时保证了大顶堆都是小于中位数的值,且top为所有值中最大的//如此就很容易的取出中间值了 double GetMedian() { if(count%2==1) return s.max.top(); else return (s.less.top()+s.max.top())/2.0; }private: int count=0;};
这么简单的题没做出来,对于结构体的认识还是不够完善。
继续努力
阅读全文
0 0
- 金山云笔试,结构体函数
- 金山笔试
- 金山笔试
- 金山笔试
- kingsoft金山笔试题
- 金山笔试题集锦
- 金山部分笔试题
- 一道金山笔试题
- 第一次笔试金山
- 金山的笔试题
- 金山笔试题9.25
- 金山笔试题 C++
- 金山软件笔试题
- 金山一道笔试题
- 金山WPS笔试题
- 231 金山笔试题
- 金山笔试试题
- 金山C++开发笔试
- POJ2431 优先队列
- Pro1-开发环境搭建
- 音视频SDK开发包涉及的技术要求
- openc3读取caffe模型
- java中list<Object[]>、list<Student>、list<Map<String,String>>排序
- 金山云笔试,结构体函数
- 第三方类库-日志-SL4J简介-2
- 坚持#第210天~云计算和云服务器
- Go类型转换 实现
- 1701H2王建瑜 连续第二天总结
- 系统管理命令
- VSCode使用git拷贝远程仓库
- Web项目中表单流程自定义之表单字段用户自定义
- 2017年10月12日训练笔记