当前位置: 首页 > news >正文

北京做手机网站设计模板网站哪家好

北京做手机网站设计,模板网站哪家好,北京燕华工程建设有限公司网站,怎么建设网站阿里云执行结果:通过 题目: 855 考场就坐 在考场里,有 n 个座位排成一行,编号为 0 到 n - 1。 当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外&am…

执行结果:通过

题目: 855 考场就坐

在考场里,有 n 个座位排成一行,编号为 0 到 n - 1

当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外,如果考场里没有人,那么学生就坐在 0 号座位上。)

设计一个模拟所述考场的类。

实现 ExamRoom 类:

  • ExamRoom(int n) 用座位的数量 n 初始化考场对象。
  • int seat() 返回下一个学生将会入座的座位编号。
  • void leave(int p) 指定坐在座位 p 的学生将离开教室。保证座位 p 上会有一位学生。

示例 1:

输入:
["ExamRoom", "seat", "seat", "seat", "seat", "leave", "seat"]
[[10], [], [], [], [], [4], []]
输出:
[null, 0, 9, 4, 2, null, 5]
解释:
ExamRoom examRoom = new ExamRoom(10);
examRoom.seat(); // 返回 0,房间里没有人,学生坐在 0 号座位。
examRoom.seat(); // 返回 9,学生最后坐在 9 号座位。
examRoom.seat(); // 返回 4,学生最后坐在 4 号座位。
examRoom.seat(); // 返回 2,学生最后坐在 2 号座位。
examRoom.leave(4);
examRoom.seat(); // 返回 5,学生最后坐在 5 号座位。

提示:

  1. 1 <= n <= 109
  2. 保证有学生正坐在座位 p 上。
  3. seat 和 leave 最多被调用 104 次。

代码以及解题思路

代码:

typedef struct mylink {int id;struct mylink *next;
} mylink;typedef struct {int length;mylink* root;
} ExamRoom;
void print_obj(ExamRoom *obj)
{printf("%d ",obj->length);mylink* tmp=obj->root;while(tmp!=NULL){printf("%d ",tmp->id);tmp=tmp->next;}printf("\n");
}ExamRoom* examRoomCreate(int n) {ExamRoom* obj=malloc(sizeof(ExamRoom));obj->length=n;obj->root=NULL;return obj;}int examRoomSeat(ExamRoom* obj) {if(obj->root==NULL){obj->root=malloc(sizeof(mylink));obj->root->id=0;obj->root->next=NULL;return 0;}int max=-1;if(obj->root->id!=0) max=obj->root->id;mylink* max_link_before=NULL;mylink* tmp=obj->root;int diff=0;while(tmp->next!=NULL){   diff=(tmp->next->id - tmp->id)/2;if(diff>max){max=diff;max_link_before=tmp;}tmp=tmp->next;}//tmp 为末尾时diff=obj->length -1 - tmp->id;if(diff>max){max=diff;max_link_before=tmp;}if(max_link_before==NULL){mylink* add=malloc(sizeof(mylink));add->id=0;add->next=obj->root;obj->root=add;return 0;}if(max_link_before->next==NULL){max_link_before->next=malloc(sizeof(mylink));max_link_before->next->id=obj->length-1;max_link_before->next->next=NULL;return obj->length-1;}else{mylink* add=malloc(sizeof(mylink));add->id=max_link_before->id + max;add->next=max_link_before->next;max_link_before->next=add;return add->id;}}void examRoomLeave(ExamRoom* obj, int p) {mylink* tmp=obj->root;mylink* before=NULL;while(tmp!=NULL){if(tmp->id==p){if(before==NULL){obj->root=tmp->next;free(tmp);}else{before->next=tmp->next;free(tmp);}return;}before=tmp;tmp=tmp->next;}}void examRoomFree(ExamRoom* obj) {mylink* tmp=obj->root;mylink* next;while(tmp!=NULL){next=tmp->next;free(tmp);tmp=next;}free(obj);}

解题思路:

1. 数据结构定义

  • mylink 结构体:表示链表中的一个节点,包含座位号 id 和指向下一个节点的指针 next
  • ExamRoom 结构体:表示考场,包含两个成员:length 表示考场总座位数,root 指向链表的头节点。

2. print_obj 函数

  • 作用:打印考场信息,包括总座位数和已分配的座位号。
  • 解题思路:首先打印总座位数 length,然后遍历链表,打印每个节点的座位号 id

3. examRoomCreate 函数

  • 作用:创建一个新的考场对象。
  • 解题思路:使用 malloc 分配 ExamRoom 结构体所需的内存,初始化 length 为传入的参数 nroot 初始化为 NULL(表示链表为空),最后返回创建的考场对象。

4. examRoomSeat 函数

  • 作用:在考场中分配一个座位,并返回分配的座位号。
  • 解题思路
    1. 如果链表为空(即还没有分配任何座位),则在链表头部插入一个座位号为 0 的节点,并返回 0
    2. 遍历链表,计算相邻座位之间的最大间距 max 和该间距前的节点 max_link_before
    3. 考虑链表末尾与最后一个座位之间的间距。
    4. 根据 max_link_before 的值,在最大间距处插入一个新节点:
      • 如果 max_link_before 为 NULL,则在链表头部插入新节点。
      • 如果 max_link_before->next 为 NULL,则在链表尾部插入新节点。
      • 否则,在 max_link_before 和 max_link_before->next 之间插入新节点。
    5. 新节点的座位号 id 为 max_link_before->id + max,然后返回新节点的座位号。

5. examRoomLeave 函数

  • 作用:释放一个座位。
  • 解题思路:遍历链表,找到座位号为 p 的节点,并将其从链表中删除。如果要删除的节点是头节点,则更新头节点为下一个节点;否则,更新前一个节点的 next 指针,跳过要删除的节点。最后释放要删除的节点的内存。

6. examRoomFree 函数

  • 作用:释放考场对象及其占用的所有内存。
  • 解题思路:遍历链表,释放每个节点的内存,然后释放考场对象本身的内存。
http://www.yayakq.cn/news/513961/

相关文章:

  • 网站的风格对比信息表哪个网站做推广好
  • 网站开发行业知识新闻单页设计费一般多少钱
  • 注册网站需要什么程序网页设计与制作教程第四版清华大学出版社
  • 建设工程项目报建网站做最好言情网站
  • 给网站添加后台国外的网站模板类网站
  • cms网站开发价格编程软件手机
  • 网站建立需要什么东莞网络营销价格咨询
  • 织梦文章title怎么显示网站titleWordPress二维码动态图片
  • 网站建设消费调查问卷中山app开发
  • 河南公司网站可以做天津备案吗中国造价网
  • 徐州手机网站制作公司网络规划设计师历年考点
  • 关于企业网站建设的请示长春人才招聘网官网
  • 用什么网站可以做官方网站模板
  • 网站建设的工作微平台推广多少钱
  • 榨油机 东莞网站建设怎样做网站标题的图标
  • 国外的云服务器租用福田企业网站优化最好的方法
  • 怎样做网站全屏代码wordpress如何导出数据
  • 晋宁网站建设贵州安顺建设主管部门网站
  • 淄博做网站跟优化自己开加工厂怎么找订单
  • 视频网站怎么制作教人做窗帘的视频网站
  • 网站建设多钱大连建设学校招生简章
  • wordpress 图片特效插件下载邹平网站建设优化公司
  • 模板网站价格表项目营销策划公司
  • 网站建设开发的条件届毕业设计代做网站
  • 内网网站建设方案网络平面设计是干什么
  • 吃什么补肾壮阳最快速搜索引擎优化诊断
  • 登封郑州网站建设网站建设设计解决方案
  • 上合建设网站企业重庆建设工程信息网一般多长时间解除屏蔽
  • 可信网站 如何验证网站优化排名的方法
  • 做网站我网站找第三方支付电影 wordpress