腾讯面试题目记录

23 篇文章 0 订阅
22 篇文章 0 订阅
import sys

flag=1

flag=0

if flag == 1 :
	inputlist=[]
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    for item in lines:
	    	inputlist.append(int(item))

# 5 3
# -1 0 1 2 3
# -1 0 1
# 2 2
# 20 18
# 2 14

if flag==0:
	inputlist=[2 ,2,20, 18,2 ,14]
n=inputlist[0]
m=inputlist[1]
listn=inputlist[2:2+n]
listm=inputlist[2+n:2+n+m]

def quicksoft(array):
	if len(array)<=1:
		return array
	less=[];
	greater=[];
	piovt=array.pop()
	for item in array:
		if item<=piovt:
			less.append(item)
		else:
			greater.append(item)
	return quicksoft(less)+[piovt]+quicksoft(greater)


listn=quicksoft(listn)
listm=quicksoft(listm)
if flag==0:
	print(listn[-2])
	print(listm[-1])

print(listn[-2]*listm[-1])
import sys

flag=1

flag=0

if flag == 1 :
	inputlist=[]
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    for item in lines:
	    	inputlist.append(int(item))

# 3
# 1 -2 2

if flag==0:
	inputlist=[3,1, -2, 2]
n=inputlist[0]
lista=inputlist[1:]

def quicksoft(array):
	if len(array)<=1:
		return array
	less=[];
	greater=[];
	piovt=array.pop()
	for item in array:
		if item<=piovt:
			less.append(item)
		else:
			greater.append(item)
	return quicksoft(less)+[piovt]+quicksoft(greater)

def cover(softarray):
	i=0
	kind=0
	for x in softarray:
		i+=1
		m1=abs(x)
		for y in softarray[i:]:
			m2=abs(y)
			r1=abs(x+y)
			r2=abs(x-y)
			if m1<=m2 :
				if r1<=r2 :
					if r1<=m1 :
						if r2>=m2 :
							kind+=1
							continue
						else:
							continue
					else:
						continue
				else:
					if r2<=m1:
						if r1>=m2:
							kind+=1
							continue
						else:
							continue
					else:
						continue
			else:
				if r1<=r2:
					if r1<=m2:
						if r2>=m1:
							kind+=1
							continue
						else:
							continue
					else:
						continue
				else:
					if r2<=m2:
						if r1>=m1:
							kind+=1
							continue
						else:
							continue
	return kind


print(cover(lista))
import sys

flag=1

flag=0

if flag == 1 :
	inputlist=[]
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    for item in lines:
	    	inputlist.append(int(item))

# 3 2
# 1 1
# 2 2
# 3 3

if flag==0:
	inputlist=[6,5,10, 2,7,1,4,3]
n=inputlist[0]
k=inputlist[1]
olx=inputlist[2::2]
oly=inputlist[3::2]

def quicksoft(array):
	if len(array)<=1:
		return array
	less=[];
	greater=[];
	piovt=array.pop()
	for index in range(len(array)):
		if array[index]<=piovt:
			less.append(array[index])
		else:
			greater.append(array[index])
	return quicksoft(less)+[piovt]+quicksoft(greater)



def function(k,olx,oly):
	lx=[]
	ly=[]
	for x,y in zip(olx,oly):
		if len(lx)==0:
			lx.append(x)
			ly.append(y)
		else:
			for i in range(len(lx)):
				if x>lx[i]:
					lx.insert(i,x)
					ly.insert(i,y)
					if len(lx)>k:
						lx.pop()
						ly.pop()
	return lx,ly

def sum(lx,ly):
	sumx=0
	sumy=0
	for x in lx:
		sumx+=x
	sumy=ly[-1]
	return sumx*sumy



blx,ly=function(k,olx,oly)
lx,bly=function(k,oly,olx)
a=sum(blx,ly)
b=sum(lx,bly)
if a>=b:
	print(a)
else:
	print(b)



import sys

flag=1

flag=0

if flag == 1 :
	inputlist=[]
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    for item in lines:
	    	inputlist.append(int(item))

# 4
# 10
# 114514 1919810 +
# 2
# 100 11 *
# 36
# TXDY DJQ -
# 36
# 3414043104 998244535 -

if flag==0:
	inputlist=[4,10,114514 ,1919810 ,'+',2,100 ,11 ,'*',36,'TXDY', 'DJQ', '-',36,3414043104, 998244535 ,'-']
n=inputlist[0]
k=inputlist[1::4]
num1=inputlist[2::4]
num2=inputlist[3::4]
o=inputlist[4::4]
print(k)
print(o)
print(num1)
print(num2)

import sys

flag=1
if flag == 1 :
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    n=int(lines[0])
	    m=int(lines[1])


def fun(n,m,i=1):
	sum=0
	symbol=1
	if(i!=n):
		for index,number in enumerate(range(i,n+1)):
			if index%m==0:
				symbol*=(-1)
			sum+=number*symbol
			# print(number*symbol)
	return sum

def fastfun(n,m):
	first=(n//(2*m))*m*m
	last=fun(n,m,2*m*(n//(2*m)))
	# print(first)
	# print(last)
	return first+last


print(fastfun(n,m))
# 牛牛和羊羊正在玩一个纸牌游戏。这个游戏一共有n张纸牌, 第i张纸牌上写着数字ai。
# 牛牛和羊羊轮流抽牌, 牛牛先抽, 每次抽牌他们可以从纸牌堆中任意选择一张抽出, 直到纸牌被抽完。
# 他们的得分等于他们抽到的纸牌数字总和。
# 现在假设牛牛和羊羊都采用最优策略, 请你计算出游戏结束后牛牛得分减去羊羊得分等于多少。
import sys

flag=1

# flag=0

if flag == 1 :
	inputlist=[]
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    for item in lines:
	    	inputlist.append(int(item))

# inputlist=[4,20,18,2,18]
n=inputlist[0]
a=inputlist[1:]

def quicksoft(array):
	if len(array)<=1:
		return array
	less=[];
	greater=[];
	piovt=array.pop()
	for item in array:
		if item<=piovt:
			less.append(item)
		else:
			greater.append(item)
	return quicksoft(less)+[piovt]+quicksoft(greater)

def fun(n,a):
	a=quicksoft(a)
	# print(a)
	niu=0
	yang=0
	while True:
		niu+=a.pop()
		# print(niu)
		n-=1
		if(n==0):
			break
		yang+=a.pop()
		# print(yang)
		n-=1
		if(n==0):
			break
	return niu - yang

print(fun(n,a))
import sys
import math
import copy

flag=1

flag=0

if flag == 1 :
	inputlist=[]
	while True:
	    line = sys.stdin.readline().strip()
	    if line == '':
	        break
	    lines = line.split()
	    for item in lines:
	    	inputlist.append(int(item))

if flag==0:
	inputlist=[100,382]
n=inputlist[0]
m=inputlist[1]

def base(N,M):
	temp=M//N
	array=[]
	for i in range(N):
		array.append(temp)
	for i in range(M%N):
		array[-i]+=1
	return array

def fun(array):
	'''小Q的父母要出差N天,走之前给小Q留下了M块巧克力。
	小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,
	请问他第一天最多能吃多少块巧克力'''
	while(True):
		arraycopy=copy.deepcopy(array)
		for index_Front in range(len(array)):
			for index_Back in range(index_Front+1,len(array)):
				temp2= array[index_Back]
				if array[index_Front]>=(array[index_Back]//2) :
					sum = array[index_Front]+array[index_Back]
					base=sum//3
					if (array[index_Front]+array[index_Back])%3==2:
						array[index_Front]=base+1
						array[index_Back]=base*2+1
					elif (array[index_Front]+array[index_Back])%3==1:
						array[index_Front]=base
						array[index_Back]=base*2+1
					else:
						array[index_Front]=base
						array[index_Back]=base*2
					if array[index_Back]==temp2:
						break
				else:
					break
		if(array==arraycopy):
			for i in range(len(array)-1):
				if(array[i]*2<array[i+1]):
					array[i]+=1
					array[i+1]-=1
			break
	return array

array=fun(base(n,m))
print(array[-1])
if flag==0:
	print(array)
	print(sum(array))
	print(len(array))
import math
import copy
import sys

inputlist=[]
while True:
    line = sys.stdin.readline().strip()
    if line == '':
        break
    lines = line.split()
    for item in lines:
        inputlist.append(int(item))

n=inputlist[0]
m=inputlist[1]

# 计算第一天吃s个巧克力一共需要多少个多少个巧克力
def funsum(s,n):
    sum=0;
    for i in range(n):
        sum+=s
        s=(s+1)//2
    return sum

# 二分查找
def fun(n,m):
    if n==1:
        return m;
    low=1
    high=m
    while low<high:
        mid=(low+high+1)//2
        if(funsum(mid,n)==m):
            return mid
        elif(funsum(mid,n)<m):
            low=mid
        else:
            high=mid-1
    else:
        return high;

print(fun(n,m))

import math
import copy
import sys

inputlist=[]
while True:
    line = sys.stdin.readline().strip()
    if line == '':
        break
    lines = line.split()
    for item in lines:
        inputlist.append(int(item))


n=inputlist[0]
m=inputlist[1]

# 计算第一天吃s个巧克力一共需要多少个多少个巧克力
def funsum(s,n):
    sum=0;
    for i in range(n):
        sum+=s
        s=(s+1)//2
    return sum

# 二分查找
def fun(n,m):
    if n==1:
        return m;
    low=1
    high=m
    while low<high:
        mid=(low+high+1)//2
        if(funsum(mid,n)==m):
            return mid
        elif(funsum(mid,n)<m):
            low=mid
        else:
            high=mid-1
    else:
        return high;


print(fun(n,m))

import sys

# inputlist=[]
# while True:
#     line = sys.stdin.readline().strip()
#     if line == '':
#         break
#     lines = line.split()
#     for item in lines:
#         inputlist.append(int(item))


inputlist=[205,1,92,4,92]
K=inputlist[0]
A=inputlist[1]
X=inputlist[2]
B=inputlist[3]
Y=inputlist[4]



def Cfun(m,n):
	ns,ms,nms=1,1,1
	for n in range(1,n+1):
		ns*=n
	for m in range(1,m+1):
		ms*=m
	for nm in range(1,n-m+1):
		nms*=nm
	sum = ns//(ms*nms)
	return sum


# print(Cfun(1,5))

def fun(a,x,b,y,k):
	answer=[]
	for i in range(1,x+1):
		for j in range(y):
			if(a*i+b*(y-j))==k:
				answer.append((i,y-j))
				break
	return answer

AnswerList=fun(A,X,B,Y,K)
AnswerSum=0
for x,y in AnswerList:
	AnswerSum+=Cfun(x,X)*Cfun(y,Y)
	print(Cfun(x,X)+Cfun(y,Y))

print(AnswerSum)
import sys

flag = 1

if flag == 1:
    inputlist = []
    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break
        lines = line.split()
        for item in lines:
            inputlist.append(int(item))

if flag == 0:
    inputlist = [3, 2, 7, 4]
n = inputlist[0]
inlist = inputlist[1:]


def quicksoft(qlist):
    if len(qlist) <= 1:
        return qlist
    else:
        low = []
        high = []
        pivot = qlist.pop()
        for item in qlist:
            if item <= pivot:
                low.append(item)
            else:
                high.append(item)
        return quicksoft(low) + [pivot] + quicksoft(high)


outlist = quicksoft(inlist)


def findsum(list, n):
    sum = 0
    flag = 0
    while n > 0:
        if flag == 0:
            sum += list[n - 1]
            flag = 1
        else:
            sum -= list[n - 1]
            flag = 0
        n -= 1
    return sum


print(findsum(outlist, n))

# def findmax(list, n):
#     if n == 0:
#         return 0
#     else:
#         temp = 0
#         for number in list:
#             if number > temp:
#                 temp = number
#         list.remove(temp)
#         return temp
# def findsum(list, n):
#     sum = 0
#     flag = 0
#     while n > 0:
#         if flag == 0:
#             sum += findmax(list, n)
#             flag = 1
#         else:
#             sum -= findmax(list, n)
#             flag = 0
#         n -= 1
#     return sum
# print(findsum(inlist, n))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值