总结:不知道笔试要摄像头,在基地的台式机就开始等待笔试了。开考才知道要摄像头,马上跑回宿舍拿笔记本,再回基地,浪费半小时多一点,人都疲惫了。开电脑开始做题,调试一直失败,超时,运行的虚拟机出错等各种问题,是101测试网站的问题,哎,第一次就给坑惨了。
实习生全国笔试,共3+4道题:
(1)给两个int数,返回其二进制形式的相对应的位置上有多少个不同的位。也就是最多32个位都不同。答案在0~32之间。
我的思路:先求两个数的异或结果,统计该结果中有几个1。
(2)给一个有N个元素的int型的数组,每个元素表示该天的股票价格。你有两次机会可以买入及卖出,每次只能买1股,且在买下一股之前保证手上无股票,问题是该股票走势能获得最高收益是多少?
我的思路:不可能在同一天买入卖出,但是可以在同一天卖出再买入。比如只提供了3天的走势,那么可以第一天买,第二天卖,第二天买,第三天卖,共两次买卖,收益是两次买卖的卖价分别减去买价后之和。其实就是在一个数组中找到4个数字,规则是a<b<=c<d,使得(b-a)+(d-c)的和最大,肯定是大于0的,不然还不如不买!所以最坏情况是不买。穷举是O(n^4)。肯定不会要你穷举。先扫一遍数组,将第i个位置的前面最小的股价记录下来,O(N^2)。再扫一遍,穷举b和d,记录最大的sum结果返回。复杂度O(n^2)。
1 for( i = n-1 to 1 ) 2 { 3 for( j = i-1 to 0 ) 4 { 5 sta[j][i]=从j到i-1的最小元素。 6 } 7 } 8 9 for( i = 1 to n-1 ) 10 { 11 for( j = i+1 to n-1 ) 12 { 13 if sum>max then 14 max=sum; 15 } 16 }
伪代码
(3)以临接矩阵的方式给一棵树,问什么两个节点之间的最小分割点什么的。完全不懂题意。题意讲的是git的版本以一棵树给出什么的,例子也只有1个,看不懂什么意思。就没有下手了。
(6)服务器附加题:关于小问题的设计和计算吧,剩下20s才看这题。忘了。
时间: 2024-12-18 05:53:18