代码渣渣居然第四范式编程题ak,兴奋之余发一下题解
今年秋招以来,终于有一次代码题ak了……忍不住发下题解,希望各位大佬指正……毕竟我就是个渣滓
这个好像是剑指offer里的一道比较经典的题目了,第一步当然是先print('false')一下,ac60%,然后本来在读数据的时候想用list(map(int, input(),split())),但是这样操作完之后,case正确率从60%降到了40%,猜测可能是这样超时了?于是只能投机取巧:
lst = input().split()
m = int(lst[0])
n = int(lst[1])
mat = []
hav = False
for i in range(m):
lst = input()
mat += [lst]
k = int(input())
hav = False
for l in mat:
l1 = list(map(int, l.split()))
if l1[0] > k or l1[-1] < k:
continue
else:
for j in l1:
if j == k:
hav = True
break
if hav:
print('true')
else:
print('false')
读数据的时候直接input(),然后后面再一行一行查,当然可以用二分查找更快,但是懒得写了【不会写】……反正ac了
思路:维护一个dict记录每个点的颜色,对于每条边的第二个点,如果之前没记录过这个点,就加进去,并且根据第一个点的颜色记录它的颜色;如果有,就看它前面那个点的颜色是不是符合要求,如果不符合直接输出No【为啥我用的list没用dict?因为没用过呗!不熟呗!】统计完所有边之后,因为题里说可能不连通,所以再看看点数是不是跟n一样多
感觉我写的代码有问题,sort的时候没考虑到可能一条边从编号大的点指向编号小的点的情况,不过反正ac了,不管了……
lst = input().split()
N = int(lst[0])
M = int(lst[1])
blist = []
p = []
pn = []
for i in range(M):
lst = list(map(int, input().split()))
blist += [lst]
blist.sort()
valid = True
for b in blist:
if not b[0] in p:
p += [b[0]]
pn += [0]
if not b[1] in p:
p += [b[1]]
if pn[p.index(b[0])] == 0:
pn += [1]
else:
pn += [0]
else:
if pn[p.index(b[0])] == pn[p.index(b[1])]:
valid = False
break
if len(p) < N:
valid = False
if valid:
print('Yes')
else:
print('No')
结束了!
#第四范式##题解#
查看5道真题和解析
顺丰集团工作强度 374人发布