位元組跳動8 12機試五道程式設計題 Nelson

2021-08-24 21:00:51 字數 3732 閱讀 6891

在[m,n]的矩陣中,只有1,0元素。定義相鄰包括:上,下,左,右,左上,左下,右上,右下八個點,求連通區域的數量,以及最大連通區域中元素1的個數。

import sys

a = sys.stdin.readline().strip().split(',')

m = int(a[0])

n = int(a[1])

d =

num =

pp =

for i in range(m):

a = sys.stdin.readline().strip().split(',')

flag = #記錄點是否被訪問過

for i in range(m):

p = [0]*n

############################################

deffun

(d,i,j):

if i>=m or j>=n or i<0

or j<0:

return

0if d[i][j] =='0'

or flag[i][j] ==1:

return

0global count

count += 1

flag[i][j] = 1

fun(d, i - 1, j - 1)

fun(d, i - 1, j)

fun(d, i - 1, j + 1)

fun(d, i, j - 1)

fun(d, i, j + 1)

fun(d, i + 1, j - 1)

fun(d, i+1, j)

fun(d, i + 1, j + 1)

############################################

for i in range(m):

for j in range(n):

if d[i][j] == '1'

and flag[i][j] == 0:

count = 0

fun(d, i, j)

print(len(num), end=',')

print(max(num))

為了提高文字質量…求眾多區間合併,相當於求多個區間的並集
def

fun(data):

data = sorted(data)

result =

index = 0

for i in range(1,len(data)):

if data[i-1][1] >= data[i][0]:

continue

index = i

return result

data = [[11,12],[8,10],[1,4],[2,8]]

print(fun(data))

抽牌遊戲,每張拍有(x,y),a,b分別抽,a(x)代表a手裡所有牌x的和,b(x)代表b手裡所有牌x的和。求a(x)==b(x)時,a(y)+b(y)的最大值,括號中:buf[i]代表x[j] a、b都不拿;buf[i-x[j]]代表 a 拿x[j];buf[i+x[j]]代表 b 拿x[j]。
def

fun(data):

n = len(data)

x =

y =

for i in data:

sum_x = sum(x)

buf = [-float('inf')] * (2 * sum_x + 1)

buf[sum_x] = 0

num = len(buf)

for i in range(n):

b = buf.copy()

for j in range(num):

if j + x[i] < num:

buf[j] = max(b[j], b[j + x[i]] + y[i])

if j - x[i] >= 0:

buf[j] = max(buf[j], b[j - x[i]] + y[i])

return buf[sum_x]

a = [[3, 1], [2, 2], [1, 4], [1, 4]]

print(fun(a))

def

fun(a,b):

n = len(a)

num = 0

for i in range(n):

left = i

right = n-1

while left <= right:

mid = left + (right - left)//2

if max(a[i:mid+1]) >= min(b[i:mid+1]):

right = mid - 1

else:

left = mid + 1

if max(a[i:mid+1]) < min(b[i:mid+1]):

num += mid - i + 1

else:

num += mid - i

return num

a = [1,1,2,1,1,1]

b = [1,2,3,4,5,6]

print(fun(a,b))

def

fun(data, m):

x =

for item in data:

if item[0] < item[1]:

else:

x = sorted(x, key=lambda k: k[1])

res = 0

for i in range(len(x)):

num = 1

index = i

for j in range(i, len(x)):

if x[j][1] - x[i][0] > m:

break

if x[j][0] >= x[index][1]:

num += 1

index = j

if num > res:

res = num

return res

if __name__ == '__main__':

data = [[0,1],[2,7],[6,9]]

print(fun(data,10))

def

fun(data, m):

x =

for item in data:

if item[0] < item[1]:

else:

x = sorted(x, key=lambda k: k[1])

res = 0

num = 1

first = 0

index = 0

for i in range(1,len(x)):

if x[i][1] - x[first][0] > m:

first += 1

if num > res:

res = num

continue

if x[i][0] >= x[index][1]:

num += 1

index = i

return res

if __name__ == '__main__':

data = [[0,5],[2,7],[3,9]]

print(fun(data,10))

位元組跳動mysql面試 位元組跳動 Golang面試

應朋友之邀,今天下午去位元組送了顆人頭,最後不負眾望,被面試官攆出來了 一面mysql索引快的原理 回答這個問題需要先看一下資料庫的儲存結構 頁結構頁和頁之間的關係 頁和頁之間的關係 有個知識,之前不知道的 聚集索引 以主鍵建立的索引,葉子節點儲存的是表中的資料 非聚集索引 非主鍵建立的索引,葉子節...

位元組跳動秋招2020 8 11筆試記錄

1.可能有多個鬧鐘可以及時到達教室 2.要在所有鬧鐘中找乙個最優解 function gettime arr 輸入部分 varn parseint readline 鬧鐘數目 var rawclocks 原始時間資料 var clocks 所有鬧鐘時間 for let i 0 i n i clock...

位元組跳動 Magic

題目描述 給乙個包含 n個整數元素的集合 個整數元素的集合 a,乙個包含 m個整數元素的集合 b。定義 magic操作為,從乙個集合中取出元素放到另里且過後每的平均值都大於操作前。注意以下兩點 不可以把乙個集合的元素取空,這樣就沒有平均值了 值為 x的元素從集合 b取出放入集合a,但集合 a中已經有...