2021.3.23 富途牛牛笔试

大学期间第一次笔试

19:00开始的场,当天给我发了三四个消息,有牛客发来的也有富途发来的,牛客的叫我登录网页登录考试,我登录牛客找了半天没找到入口,加了什么hr解答公众号也没有通过,本来都想算了,19:10几又给我发个信息,我就想:再去加个牛客的公众号试试得了,结果终于绑定了牛客账号之后才找到考试入口…

然后是在牛客上的笔试,需要开摄像头,网页录屏,手机监控等,一开始不知道是在牛客笔试,在宿舍考的,有点吵。

20道单选题,2道编程题

选择题
提出点我记得的部分:

概率论(简单的像高中数学):4个不同球放在4个不同箱子。他题目并没有给出需要每个箱子都放满,那应该是 4 4 4^4 44,结果没有这个答案,那就只能是 4 ! 4! 4! 了…就很迷

16进制与运算: i = 0 x F E 78 D A 45 , j = 0 x A C 3189 B 2 i=0xFE78DA45,j=0xAC3189B2 i=0xFE78DA45j=0xAC3189B2,求 i i i^ j j j ,我一开始以为是 i j i^j ij的,不会,看了一眼答案,就标记之后看下一题,全部写完之后回来看才发现是 i i i^ j j j

二分查找:给一个数组,一个数字,问你二分查找这个数字的比较次数。这个不多说,比较 e z ez ez

好多道计网和数据库的题我不会…

编程题
一、给一个链表跟一个值,让你把这个链表里小于这个值的都放在链表左边,等于这个值的都放在中间,大于这个值的都放在链表右边。

思路一开始就想到了快排的思路,但是md以前写题都几乎没用过结构体链表,这下子总算吃了亏。

struct ListNode{
	int val;
	ListNode *next;
} //结构体链表

就这样的链表,我只知道指向性跟赋值,不知道怎么新建节点等,而且我想的是head指向的下一个值才是第一个数…结果他竟然head的值是第一个数,我最后几分钟才发现。
所以最后走了个小技巧,就是把链表中所有的值都整到vector里,然后再通过vector来调序,最后再赋值回链表里。

ListNode *tmp=head;
ListNode *ans=head;
vector<int>v;
while(tmp!=NULL) {
	v.emplace_back(tmp->val);
	tmp=tmp->next;
}
int l=0,r=v.size()-1;
while(l<r) {
	while(l<r&&v[l]<=piovt) l++;
	while(l<r&&v[r]>=pivot) r--;
	if(l<r) swap(v[l],v[r]);
}
int q=0;
while(ans!=NULL) {
	ans->val=v[q++];
	ans=ans->next;
}

我是这样写的。样例能过,但是只有70%通过率。现在还是没整明白为什么。1e6 按理来说不可能超时才对。

二、给一个n,表示01字符串的大小,问长度为n的01字符串中,有多少个01字符串所有’0’的左边必定有个’1’ 。

这题目也是没有说明白到底是左边一位有’1’才行,还是左边多少位有’1’都行。看了样例之后才明白是左边一位。然后随便写了几个
1->1,2->2,3->3,4->5,5->8
猜了个斐波那契,结果秒了。

总结:链表还是得练练。。否则像今天这样就很悲催。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值