面试真题(三)

来源:互联网 发布:fx2n128mt编程手册 编辑:程序博客网 时间:2024/05/17 07:20

60分钟,30道单选+5道多选+若干填空+1道编程。


1、约瑟夫环问题

摘自百度:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

思路:题目要求用链表解决,但是却没有给出函数原型,所以我自己采用的是int func(ListNode* head, int n, int k, int m),约瑟夫环是一个很简单的问题,应该不用多解释了。

class ListNode{public:int val;ListNode* next;ListNode(int v=0):val(v),next(nullptr){};};int func(ListNode* head, int n, int k, int m){while(--k){head=head->next;}int count=1;while(n!=1){ListNode* temp=head;head=head->next;count++;if(count==m){temp->next=head->next;head=temp->next;count=1;n--;}}return head->val;}

其实之前还有面过一家,只不过因为时间太久远了所以不记得题目了。。。面试也挂在了HR面,难过TAT

0 0
原创粉丝点击