2019/9/6 招引网科算法笔试题

菜鸡第一次发帖,时间复杂度有点高,大佬们看看就好😂😂😂
#第二题求矩阵最大面积和
import collections
n=int(input().strip())
nums=list(map(int,input().strip().split()))# 6 5 4 0 3 7 7----35
counter=dict(collections.Counter(nums))
counter=sorted(counter.items(),key=lambda s:int(s[0]),reverse=True)
#print(counter)
ll=[]
mm=[]
temp=0
for value,num in counter:
    if value>0:
        if num>=2:
            while num>=2:
                ll.append(value)
                if len(ll)==2:
                    mm.append(ll[0]*ll[1])
                    ll=[]
                num-=2
        if num==1:
            if temp==0:
                temp=value
            elif temp==value+1:
                ll.append(value)
                temp=0
        if len(ll)==2:
            mm.append(ll[0]*ll[1])
            ll=[]
print(sum(mm))
#第三题拿面包
n,k=map(int,input().strip().split())
nums=list(map(int,input().strip().split()))
j=0
pp=[]
for i in range(n):
    if 8>=nums[j]:
        pp.append(nums[j])
        j+=1
        if j>=len(nums):
            nums.append(0)
    else:
        temp=nums[j]-8
        pp.append(8)
        j+=1
        if j>=len(nums):
            nums.append(0)
        a[j]+=temp
        
    if sum(pp)>=k:
        print(i+1)
if sum(pp)<k:
    print(-1)
逻辑很简单,奈何当时调试的时候总出问题(不能本地编译真的很不习惯)。。。

#笔试题目##算法工程师#
全部评论
这个环境我试了一下,Python默认是2个空格缩进,如果你是Tab缩进就编译不过
点赞 回复 分享
发布于 2019-09-07 10:05
初始化一个空列表,直接逆排序,判断第一个数是否等于第二个数或第一个数减一是否等于等二个数,如果等于就将这个数加入空列表,原列表移除这两个数,如果不等于,原始列表移除第一个数,继续循环,当这个列表长度等于2时,计算面积,然后将列表初试化为空。
点赞 回复 分享
发布于 2019-09-07 00:57
我用py死活编译出错,换了java写😂,那个笔试环境太辣鸡了
点赞 回复 分享
发布于 2019-09-06 22:35
我拿排序做的😂
点赞 回复 分享
发布于 2019-09-06 22:34
估计凉了,很不甘心
点赞 回复 分享
发布于 2019-09-06 22:22

相关推荐

不愿透露姓名的神秘牛友
03-28 13:48
hory权:校招vip纯神人了,还说自己是什么师范大学的
点赞 评论 收藏
分享
03-04 19:02
云南大学 Java
Yki_:没挂,只是没人捞,该干啥干啥,等着就好了
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务