9.4 网易互联网笔试 统计及思路
开发岗,写的是通用技术
四道题分值是不一样的,分别是15,20,30,35,总分100
各位可以算一下总分呀,比如第一题通过60%,就是15*60% = 9分
第三题(删除k次x之后的最大值):
因为删除次数10^9,用什么数据结构删这个次数都得超时,我也试了priority queue也超时。所以我的思路是计算出要删几次,而不是一次一次删。
比如假设数组为[4 3 11 2 1],删10000次,每次删5。前2次都是对11删,变成[4, 3, 1, 2, 1],还剩9998次。之后每5次会把所有数各删一次,所以删了9998/5 = 1999个回合,余3次,删完这3次之后剩下的是原来第4大的,即数组里中的1,直接算出结果为1-(1999*5)=-9994。
具体实现,读完数据后统计一下,要删多少次才能到这种“循环删”的阶段,如果k小于该次数,按优先队列的方法做,如果k大于该次数,按上面的方法。
第二题(01字符串):
直接构造,符合条件的字符串,k个1最多有(k-1)对相邻的1,实际有t对相邻的1,则需要在连续的k个1中插入(k-1)-t个0,比如k=8, t=3,那么生成101010101111,之后根据n的数量补零。
return -1的情况:(1)t>=k,因为最多只能有(k-1)对相邻的1,(2)上述构造完的字符串长度>n。