- 博客(20)
- 资源 (3)
- 收藏
- 关注
原创 20200823腾讯笔试题
题目描述:现有n个人,要从这n个人中选任意数量的人组成一只队伍,再在这些人中选出一名队长,求不同的方案对10^9+7取模的结果。如果两个方案选取的人的集合不同或选出的队长不同,则认为这两个方案是不同的。分析:因为选择过程与顺序无关,从n个不同元素中取出m个元素的组合数为c(n,m)。则总的方案数为1 * C(n,1)+2 * C(n,2)+3 * C(n,3)+4 * C(n,4)+…n * C(n,n)根据数学公式推导,最终上面组合式结果为n2^(n-1)。思路:因此问题转化为求 n2^(n-
2020-08-23 20:37:20 284
原创 0815:携程笔试
有a、b两种长度的瓷砖,从中任选k块,输出所有可能铺出的道路长度# 有a、b两种长度的瓷砖,从中任选k块,输出所有可能铺出的道路长度def divingBoard(a,b,k): if k==0: return [] else: ans=set() for i in range(0,k+1): sum=i*a+(k-i)*b ans.add(sum) return list(sorte
2020-08-16 11:10:13 181
原创 动态规划:蜗牛爬井问题
动态规划:蜗牛爬井问题一只蜗牛白天爬4米,晚上掉2米,n米的井,蜗牛几天才能爬出来def costDay(n): if n==0: return 0 elif n<=4: return 1 else: ans=[] ans.append(0) ans.append(2) i = 2 ans_temp=0 while 1: a
2020-08-16 10:27:50 1393
原创 dfs实现任意n个数的全排列
arr=[4,7,3,8] # 这里可以把它替换成任意的数组a=[0 for i in range(10)] #存放每一种组合遍历过程中的数字book=[0 for i in range(10)] #标记数组n=3def dfs(step): # 尝试每一种可能 for num in arr: if book[num]==0: a[step]=num book[num]=1 dfs(step+1
2020-08-15 21:12:53 217
原创 动态规划:青蛙跳台阶问题
问题描述:青蛙可以一次跳一个台阶,也可以一次跳两个台阶,总共有10层台阶,青蛙有多少种选择动态规划:设第n层的最多选择为Stage(n),根据题意,可得如下状态转移方程:Stage(n)=Stage(n-1)+Stage(n-2)如果n=10,则上述的意思就是第十层的选择等于第九层的选择数+第八层的选择数。(这是因为青蛙一次可以跳一个台阶,也可以一次跳两个台阶,当青蛙在第八层和第九层时都可以达到第十层)def Stage(n): if n<0: return -1
2020-08-14 22:23:49 562
原创 动态规划:斐波那契数列
斐波那契数列一般是使用递归来做,但是用递归来做当数量很大时,往往会超时。所以可以使用动态规划来做。def fib(n): dp=[] if n<0: return -1 if n==0: return 0 if n==1: return 1 else: dp.append(0) dp.append(1) for i in range(2,n+1):
2020-08-14 22:05:08 121
原创 动态规划:求解金矿问题
题目描述:很久很久以前,有一个国王拥有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不相同。例如:有的金矿存储量是500kg黄金,需要5个工人来挖;有的金矿存储量是200kg黄金,需要3个工人来挖…如果参与挖矿的工人总数是10,每座金矿要么全挖,要么不挖,不能派出一半人挖取一半的金矿,想要得到尽可能多的黄金,应该选择挖哪几座金矿?数据信息如下:工人:共10名200kg黄金/3人;300kg黄金/4人;400kg黄金/5人;500kg黄金/5人;350kg黄金/3人;求:挖哪几座金矿才
2020-08-12 10:56:22 456
原创 0805华为笔试题:找出一个文本中有多少匹配的模式
def Method(str1,str2): i,j=0,0 ans=0 for _ in range(len(str1)): while i<len(str1): if str1[i] != str2[0]: i += 1 else: break while j<len(str1): if str1..
2020-08-05 21:59:47 210
原创 LeetCode:两个链表的第一个公共节点(Python)
def Method(arrA,arrB): a=len(arrA) b=len(arrB) if a<b: arrA,arrB,a,b=arrB,arrA,b,a dis=a-b for i in range(dis,b): if arrA[i]==arrB[i-dis]: return arrA[i] return Noneif __name__=="__main__": arr..
2020-08-04 21:02:18 154
原创 socket编程:基于UDP的数据传输
服务器端:import socketHOST = ''PORT = 10888s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.bind((HOST, PORT))data = Truewhile data: data, address = s.recvfrom(1024) if data == b'bye': # 当收到bye时退出循环 break print('Received Strin
2020-08-04 16:00:11 424
原创 网络编程:socket编程初步
基于TCP的连接先运行服务端程序,再运行客户端程序连接基本功能:客户端程序从键盘键入信息,服务器收到后显示并再次转发给客户端进行显示。服务器程序:import socketHOST=''PORT=10888s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((HOST,PORT))#把该IP地址和端口绑定到服务端s.listen(1)conn,addr=s.accept() #accept()允许连接,返回出客户端的IP地
2020-08-04 11:53:33 202
原创 拼多多笔试题:飞行棋(Python)
if __name__=="__main__": K,N=map(int,input().strip().split()) array=list(map(int,input().strip().split())) ht = 0 if(K!=0): for i in range(len(array)): if K == array[i]: K = K - array[i] ...
2020-08-02 19:45:47 733
原创 leetcode:调整数组顺序使奇数位于偶数前面(首尾双指针、快慢指针)
# 调整数组顺序,使奇数位于偶数前# method1:首尾双指针def Method1(arr): left=0 right=len(arr)-1 while left<right: while arr[left]%2!=0: # 如果left指向的是奇数就一直向右移 left += 1 while arr[right]%2==0: # 如果right指向的是偶数就一直向左移 right...
2020-08-01 22:10:55 277
原创 LeetCode:和为s的两个数,双指针(碰撞指针)
# 和为s的两个数:双指针(碰撞指针)def Method(arr,target): i=0 j=len(arr)-1 while i<j: s=arr[i]+arr[j] if s>target: j -= 1 elif s<target: i += 1 else: return arr[i],arr[j] retur.
2020-08-01 21:52:49 149
原创 LeetCode:找重复的数字(Python)
#寻找重复的数def Method(arr): i=0 while i<len(arr): if arr[i]==i: i += 1 continue # 第一次遇到数字 xx时,将其交换至索引 x 处; # 而当第二次遇到数字 x 时,一定有 nums[x] = x # 此时即可得到一组重复数字。 if arr[arr[i]]==arr[i]: .
2020-08-01 18:02:32 142
原创 笔试题:找亲戚(Python列表全排列,找能被7整除的数)
对于列表中的数字进行全排列,然后寻找能被7整除的数。def Method(arr,p,q): if p==q: s.append(list(arr)) else: for i in range(p,q): arr[i],arr[p]=arr[p],arr[i] Method(arr,p+1,q) arr[i],arr[p]=arr[p],arr[i]s=[]res=0arr=li
2020-08-01 17:23:06 1369
原创 LeetCode:数组中出现次数超过一半的数字(Python)
# 数组中出现次数超过一半的数字def Method(arr): vetos=0 for num in arr: if vetos==0: res=num vetos += 1 if res==num else -1 return resif __name__=='__main__': array=list(map(int,input().strip().split())) print(Metho...
2020-08-01 14:33:59 243
原创 LeetCode:和为n的连续正数序列(Python)
# 和为n的连续正数序列def SumN(n): l=1 r=2 res=[] while l<r: sumN=((l+r)*(r-l+1))/2 if n==sumN: tep=[] for i in range(l,r+1): tep.append(i) l += 1 res.append(tep) ..
2020-08-01 11:38:13 579 1
原创 LeetCode:求一个数的二进制位中1的个数(Python)
def Numof1(n): res=0 while n: res += 1 n &= (n-1) return resif __name__=='__main__': n=int(input()) print(Numof1(n))
2020-08-01 11:11:18 219
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人