位元組跳動2019春招研發部分程式設計題彙總

2021-10-04 05:37:41 字數 4224 閱讀 6945

1。萬萬沒想到之聰明的編輯

新增鏈結描述

import sys

n = int(sys.stdin.readline()[:-1])

input =

for i in range (n):

#print(input)

result =

for inp in input:

length = len(inp)

res = inp[:2]

if length >= 3:

for i in range(2, length):

#print('inp ', inp)

#print('res ', res)

if inp[i] == res[-1] and res[-1] == res[-2]:

continue

elif inp[i] == res[-1] and res[-2] == res[-3]:

continue

res += inp[i]

for res in result:

print(res)

2.萬萬沒想到之抓捕孔連順

新增鏈結描述

import sys

n,d = map(int, input().split())

nums = list(map(int, input().split()))

#nums = (sys.stdin.readline()[:-1].split())

#nums = [int(f) for f in nums]

left, right, res = 0, 2, 0

while left < n-2:

while right < n and nums[right] - nums[left] <= d:

right += 1

num = right - 1 - left

res += num * (num - 1) // 2 #計算left到right之間的點k的組合數c(k, 2)

left += 1

print(res % 99997867)

3.雀魂啟動!

新增鏈結描述

def ishu(nums):

if not nums:

return true

n = len(nums)

count = nums.count(nums[0])

# 沒出現過雀頭,且第乙個數字出現的次數 >= 2,去掉雀頭剩下的能不能和牌

if n%3 and count >= 2 and ishu(nums[2:]):

return true

# 如果第乙個數字出現次數 >= 3,去掉這個刻子後看剩下的能和牌

if count >=3 and ishu(nums[3:]):

return true

# 如果存在順子,移除順子後剩下的能和牌

if nums[0]+1 in nums and nums[0]+2 in nums:

tmp = list(nums) #儲存現場

tmp.remove(nums[0])

tmp.remove(nums[0]+1)

tmp.remove(nums[0]+2)

if ishu(tmp):

return true

return false

def main(nums):

d = {} #統計出現次數(詞頻)

for i in nums:

d[i] = d.get(i, 0) + 1

card_list = set(range(1, 10)) - #只取次數為4的,用來做差集

res =

for i in card_list:

if ishu(sorted(nums + [i])):

print(' '.join(str(r) for r in sorted(res)) if res else '0')

nums = [int(x) for x in input().split()]

main(nums)

4.特徵提取

新增鏈結描述

case = int(input())

res = 0

for _ in range(case): #遍歷每個用例

frames = int(input())

last_map = {} #上一幀頻率

for _ in range(frames): #遍歷每幀

line = list(map(int, input().split(' '))) #每行轉成陣列

n = line.pop(0) #特徵數

current_map = {} #記錄特徵頻率

for i in range(n): #取出每幀所有特徵

feature = (line[2*i], line[2*i+1])

#print(feature)

current_map[feature] = last_map.get(feature, 0) + 1 #統計特徵頻率

res = max(res, current_map[feature]) #記錄最大連續幀

#print(last_map, current_map)

last_map = current_map #更新

print(res if res >= 2 else 1)

5.畢業旅行問題

新增鏈結描述

dfs回溯,沒有完全通過

import sys

n = int(input())

m =

for i in range(n):

#print(m)

vis = [false] * n

vis[0] = true

res = sys.maxsize

def abc():

print(m)

def dfs(vis, local, vn, price):

global res

#print(res)

if price > res:

return

if vn == n:

val = price + m[local][0]

res = min(res, val)

return

for i in range(1, n):

if vis[i]:

continue

vis[i] = true

dfs(vis, i, vn+1, price + m[local][i])

vis[i] = false

#abc()

dfs(vis, 0, 1, 0)

print(res)

dp:

新增鏈結描述

6.找零

新增鏈結描述

num = 1024 - int(input())

coin_64 = num // 64

num = num % 64

coin_16 = num // 16

num = num % 16

coin_4 = num // 4

num = num % 4

coin_1 = num

print(coin_64 + coin_16 + coin_4 + coin_1)

7.機械人跳躍問題

新增鏈結描述

一維dp:

input()

arr = list(map(int, input().split(' ')))

# 假設跳躍前能力為e,要跳的高度為h,那麼跳躍後的能量就是2e-h,

# 那麼跳躍後的能量加上高度就是跳躍前的兩倍,然後從後往前逆推。

e = 0 # 跳到最後一步的能力值設為0

#從後往前

#遞推公式為e(k) = [e(k+1)+h(k+1)] / 2

#由於e都是整數,因此考慮向上取整,故實際運算時用[e(k+1)+h(k+1)+1] // 2

for h in arr[::-1]:

e = (e + h + 1) >> 1 #用右移運算代替對2整數除也可

print(e)

位元組跳動2019春招研發部分程式設計題 訂正

1.小包最近迷上了一款叫做雀魂的麻將遊戲,但是這個遊戲規則太複雜,小包玩了幾個月了還是輸多贏少。於是生氣的小包根據遊戲簡化了一下規則發明了一種新的麻將,只留下一種花色,並且去除了一些特殊和牌方式 例如七對子等 具體的規則如下 總共有36張牌,每張牌是1 9。每個數字4張牌。你手裡有其中的14張牌,如...

2019位元組跳動春招題目

2019位元組跳動演算法崗春招 不是2020屆的秋招!共四道程式設計題,沒有選擇題。筆試的時候只做出來了前兩道,這裡參考了大佬 azhao1993 的解題思路,把後兩道的解法整理一下。現在有n人參加程式設計比賽,比賽結束後每個人都得到乙個分數。現在所有人鋪成一圈 第1個和第n個相鄰 領取獎品,要求 ...

2019春招筆試涼經 位元組跳動20190316

1.求找錢最少給幾個硬幣 有1024元錢 輸入你花掉的數目問找回的硬幣數最小 有64 16 4 1 的硬幣 res 1024 n cnt 0 while res 64 res 64 cnt 1 while res 16 res 16 cnt 1 while res 4 res 4 cnt 1 whi...