9.9头条笔试研发,骗了这么多分不知道是不是人工阅卷

最大不重复子串:用hash map维护一个滑动窗口,ac。
def lengthOfLongestSubstring(s):        
  hash_table = {}
  max_len = -1
  cur_left = 0
        
  for i, c in enumerate(s):
      if c in hash_table and hash_table[c] >= cur_left:
          cur_left = hash_table[c] + 1
      else:
          max_len = max(max_len, i - cur_left + 1)
      hash_table[c] = i
        
  return max_len

组织优化:暴力搜索,ac
import sys

DIRS = [[1, 0], [-1, 0], [0, 1], [0, -1]]


def dfs(g, x, y, visited):
    visited[x][y] = True
    for dir in DIRS:
        temp_x = x + dir[0]
        temp_y = y + dir[1]
        if 0 <= temp_x < len(g) and 0 <= temp_y < len(g[0]) and not visited[temp_x][temp_y] and g[temp_x][temp_y] == 1:
            dfs(g, temp_x, temp_y, visited)
    return


if __name__ == '__main__':
    m = int(sys.stdin.readline().strip())
    graph = []
    for i in range(m):
        temp = list(map(int, sys.stdin.readline().strip().split()))
        if temp:
            graph.append(temp)
    visited = [[False for i in range(len(graph[0]))] for j in range(len(graph))]

    count = 0
    for i in range(len(graph)):
        for j in range(len(graph[0])):
            if graph[i][j] == 1 and not visited[i][j]:
                dfs(graph, i, j, visited)
                count += 1
    print(count)
ip还原:输出2骗了50%
utf-8校验:输出0骗了60%
抖音红人:将关系抽象成图后暴力搜索,ac。
import sys


def dfs(g, x, y, visited):
    n = len(g)
    visited[y] = True
    for i in range(n):
        if i != y and g[y][i] == 1 and g[x][i] == 0 and not visited[i]:
            g[x][i] = 1
            dfs(g, x, i, visited)
    return


if __name__ == '__main__':
    n = int(sys.stdin.readline().strip())
    m = int(sys.stdin.readline().strip())

    temp_relation = list(map(int, sys.stdin.readline().strip().split()))
    relation = [[0 if i != j else 1 for i in range(n)] for j in range(n)]
    for i in range(m):
        relation[temp_relation[2 * i] - 1][temp_relation[2 * i + 1] - 1] = 1

    for i in range(n):
        visited = [False for i in range(n)]
        for j in range(n):
            if i != j and relation[i][j] == 1 and not visited[j]:
                dfs(relation, i, j, visited)

    relation = list(zip(*relation))
    count = 0
    for i in range(n):
        flag = True
        for j in range(n):
            if relation[i][j] == 0:
                flag = False
                break
        if flag:
            count += 1
    print(count)

#笔试题目##字节跳动##题解#
全部评论
为何大家都如此优秀啊啊啊
点赞 回复 分享
发布于 2018-09-09 12:05
第二题不能ac的,我刚开始也是80%。后来把数组循环范围从(m,m)改为(len(g),len(g[0]))后就ac了。应该是有测试用例不是m*m的。
点赞 回复 分享
发布于 2018-09-09 12:06
大神,膜拜
点赞 回复 分享
发布于 2018-09-09 12:00
最后一题用并查集 a了0.33  不知道 两个相互关注那一块怎么处理
点赞 回复 分享
发布于 2018-09-09 12:02
这次题还可以,都有思路,做了3.7个。就是提量太大,每个过了80%之后来不及调bug
点赞 回复 分享
发布于 2018-09-09 12:02
第二题DFS为啥我只能80%,python报运行超时;第5题,50%,也报运行超时或者运行错误。分不清到底是什么原因
点赞 回复 分享
发布于 2018-09-09 12:04
感觉有不少在leetcode上都见过 最后一题没想到暴力搜索居然ac了。。。 还有。。强烈谴责楼主这种偏分行为(真TM机智)
点赞 回复 分享
发布于 2018-09-09 12:05
大佬大佬,膜拜
点赞 回复 分享
发布于 2018-09-09 12:06
第二题80%提示越界? import sys def getExtend(matrix,i,j,mylist):     if i-1>=0:         if matrix[i-1][j]==1 and [i-1,j] not in mylist:             mylist.append([i-1,j])     if i+1<=n-1:         if matrix[i+1][j]==1 and [i+1,j] not in mylist:             mylist.append([i+1,j])     if j-1>=0:         if matrix[i][j-1]==1 and [i,j-1] not in mylist:             mylist.append([i,j-1])     if j+1<=n-1:         if matrix[i][j+1]==1 and [i,j+1] not in mylist:             mylist.append([i,j+1])     return mylist s=sys.stdin.readline().strip() data=[] while s != '':     s=list(map(int,s.split()))     data.append(s)     s=sys.stdin.readline().strip() n=data[0][0] mylist=[] value=2 matrix=data[1:] for i in range(n):     for j in range(n):         if matrix[i][j]==1:             matrix[i][j]=value             mylist=getExtend(matrix,i,j,mylist)             while mylist != []:                 [p,q]=mylist.pop()                 matrix[p][q]=value                 mylist=getExtend(matrix,p,q,mylist)             value+=1 print(value-2)                          
点赞 回复 分享
发布于 2018-09-09 12:07
输出0都能骗60%的吗?   话说骗分到底能不能用的。。
点赞 回复 分享
发布于 2018-09-09 12:13
最后一题 import sys def getRelationExtend(p,r,relations):     list1=relations[p]     listLen=len(list1)     for p2 in r:         list2=relations[p2]         for l in list2:             if l not in list1 and l != p:                 list1.append(l)     if len(list1)==listLen:         return relations[p]     else:         newAdd=list1[listLen:]         relations[p]=list1         return getRelationExtend(p,newAdd,relations)               s=sys.stdin.readline().strip() data=[] while s != '':     s=list(map(int,s.split()))     data.append(s)     s=sys.stdin.readline().strip() n=data[0][0] m=data[1][0] myrelations={} relations=data[2] for i in range(m):     if relations[2*i-1] not in myrelations:         myrelations[relations[2*i-1]]=[relations[2*i-2]]     else:         if relations[2*i-2] not in myrelations[relations[2*i-1]]:             myrelations[relations[2*i-1]].append(relations[2*i-2])         else:             pass for i in range(n):     if i+1 not in myrelations:         myrelations[i+1]=[] count=0 for p in myrelations:     pRelations=myrelations[p]     r=getRelationExtend(p,pRelations,myrelations)     myrelations[p]=r     if len(r) == n-1:         count+=1      print(count)
点赞 回复 分享
发布于 2018-09-09 12:14
头条天天笔试,不可能人工吧
点赞 回复 分享
发布于 2018-09-09 12:15
第二题,代码没看出什么区别,通过80% ``` m = input() grid = [] for _ in xrange(m):     grid.append(raw_input().split())      color = [[0] * m for i in range(m)] res = 0 def dfs(i,j):     for ii,jj in [(i-1,j),(i+1,j),(i,j-1),(i,j+1)]:         if 0 <= ii < m and 0 <= jj < m and color[ii][jj] == 0 and grid[ii][jj] == '1':             color[ii][jj] = 1             dfs(ii,jj)              for i in range(m):     for j in range(m):         if color[i][j] == 0 and grid[i][j] == '1':             color[i][j] = 1             dfs(i,j)             res += 1 print res ```
点赞 回复 分享
发布于 2018-09-09 12:48

相关推荐

2024-12-04 20:41
南华大学 C++
牛客774533464号:现在要求你有实习经验,才让你实习!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务