自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 python3内置实用函数

abs(x)返回x的绝对值all(x)如果列表或者元组x所有元素不为0、’’、False或者iterable为空,all(iterable)返回True,否则返回False;注意:空元组、空列表返回值为True,这里要特别注意。any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。bin(x)返回x的二进制表示bool()函数用于将给定参数转换为布尔类型,如

2020-07-24 10:51:22 69

原创 python中的数据类型

python的数据类型python3有六个标准的数据类型不可变number(数字)string(字符串)tuple(元组)可变list(列表)set(集合)dictionary(字典)数字:可进行“+,-,*,/,//(取整),%取余,**乘方”字符串用‘’或者“”括起来,str*2是重复两遍=strstr,+表示连接str1+str2=str1str2列表list=[1,2,3]list*2输出两次列表[1,2,,3,1,2,3],+可以把两个列表左右拼起来(但是不能减).

2020-07-22 19:39:53 205 1

原创 grpc 实现跨服务器跨语言的调用

在python语言上的实现https://www.cnblogs.com/sunshine-blog/p/12193064.htmlhttps://www.jianshu.com/p/43fdfeb105ff?from=timeline&isappinstalled=0

2022-03-03 11:09:34 715 1

原创 双向单链表

class Node: def __init__(self,item): self.elem = item self.next = None self.prev = Noneclass DoubleLinkList: #初始化 def __init__(self,node=None): if node != None: self.__head = Node(node) else

2022-01-21 13:52:49 207

原创 单向单链表

class Node(object): def __init__(self,elem): self.elem = elem self.next = Noneclass SingleLinkList: #初始化 def __init__(self,node=None): if node != None: self.__head = Node(node) else: sel

2022-01-21 13:52:11 117

原创 基于keras的变形textcnn网络理解

![在这里插入图片描述]textcnn结构图

2021-12-09 16:03:59 4955

原创 kmp算法理解与实现

kmp算法理解与实现

2021-12-01 14:36:04 112

原创 余弦相似度实现 pytorch实现

余弦相似度实现pytorch实现embedding = embedding / embedding.norm(dim=1, keepdim=True)wdvec = embedding[wdid, :]dis = 1 - (wdvec *embedding).sum(dim=1)idx = dis.argsort()先用第二范式对embedding矩阵的每一行取模,再向量成矩阵,最后对矩阵排序得到最优解...

2021-11-11 16:31:26 1106

原创 顺丰2021服务器管理(python)

题目:小A购买的路由器,他准备将路由器租出去,每个路由器有个固定的带宽,人们根据自己的需要的带宽租用这些路由器,一台路由器只能祖给一个人,小A现在有n个路由器,第i个路由器拥有ai的带宽。有m个客户,第i个客户需要至少bi的路由器,并且预算为ci元。小A想知道自己的服务器最多能组多少钱。输入:3 4#n,m1 2 3#ai2 1#b1 c13 23 31 1#b4 c4输出:5思路:使用贪心算法优先租给预算多的,并且优先将满足客户需求且带宽尽肯可能 小的路由器租给该顾客。代码如下:l

2020-08-20 22:13:37 386

原创 华为2021秋招,0819算法第一题(顺时针补入矩阵查找某个数的位置),python

题目给你N行M列的人,他们是一个方阵。左上角是(0,0),右下角是(n-1, m-1),最外圈的人顺时针报数,当他们报的数个位是7并且十位是奇数,就选出来。外圈报完了内圈接着报,一直到所有人都报完,问最后选出来的是哪些。要求是10<=n,m<=1000,如果输入不合法,那么就是返回空数组输入10 10输出[[7,9],[1,1],[8,2],[7,5],[4,4]]思路:一圈一圈的补,一共是(m+1)//2圈。每一圈分4部分补,比如1010的圈。第一部分是第一行的前9个,第二部分

2020-08-19 22:24:09 440

原创 华为机考,蛇形矩阵,python

思路:每行的数是有规律的,以n=4为例,第一行的第一个数是1,第二数是1+2=3,第三个数是3+3 =6,第四个数是6+4=10,总共加了n-1次分别是range(2,n+1),第二行的第一个数是1+1=2,第二个数是2+3=5,第三个是5+4=9,总共加了n-2次,分别是range(3,n+1)。第三行第一个数是第二行第一个数加2,2+2 =4,第二个数是4+4=8,总共加n-3次为range(4,n+1),第四行第一个数是第三行第一个数加3,4+3=7,第四行没有其他数因为n-4=0。泛化成数字表示,

2020-08-19 11:11:49 967

原创 小米最少立方数和

题目:给出一个数字N(0<N<1000000),将N写成立方数和的形式,求出需要的最少立方数个数。例如N=17,1+8+8 = 17,最少需要3个立方数,则输出3。N= 28,1+1+1+1+8+8+8=28, 需要7个立方数,1+27=28,需要2个立方数,所以最少立方数为2,则输出2。思路:我想法是这是一个完全背包的变形,体积是立方,每个物品的价值是1,体积限制是N,要求必须把背包装满的最小价值。dp[i][j]是,可以使用前i个物品,剩余体积为j时可以获得的最小价值。dp[i][

2020-08-15 10:45:15 199

原创 b站2021校招算法质数累加和

题目:一些正整数能被表示成一个或者多个连续质数的和。那一个数会有多少种这样的表示方式呢?比如41可以表示成2+3+5+7+11+13,11+13+17,41三种输入:41输出:3思路,将小于等于n的所有质数有序放入列表,再将列表开始遍历,从第一个数开始,累加后面的多个数,如果累加为n则记一次数,如果累加超过n就跳出累加,再从第二个数开始,知道最后一个数。计数结果就是最后输出结果。代码如下:n = int(input())def sushu(num): if num == 2:

2020-08-13 21:41:18 356

原创 贝壳2021算法取模操作

题目:给定两个非负整数a,b,求有多少个正整数x满足a mod x =b,如果有无穷个输出‘inf’输入7 3输出1思路:a/x=y…b,等价与xy+b=a,a,b已知,就是求有多少个正整数x,y满足xy=a-b,及求xy有多少个约数,因为数取模x一定要大于b。所以题目最后等价于求xy在(b,a-b]范围内有多少个约数。当a-b=1时没有约数,a-b=0时有无数个约数,a-b<0也没有约数。写代码时需要枚举这些特例。代码如下:list1 = list(map(int,input().s

2020-08-12 11:30:34 266

原创 贝壳2021算法,数列删除数字变成最大公约数为1

题目:我们定义任意一个序列的最大公约数为最大的能整除序列中所有数的数,例如[2,2,4]的最大公约数为2,[1,2,4]的最大公约数为1,现在想对于一个长度为N的序列,如果最多能删除N-1个数,请问他需要至少删除多少个数可以让序列的最大公约数为1,或者不可能,不可能输出-1。输入:2#数据组数3#每组数据中序列的长度2 2 4#序列内的数21 2输出:-10思路:将数列的第一个数作为数列其他数的除数,只要能整除就把后面的数都删了,再到数列剩下数的第二个作为数列其他数的除数,整除的再删,只

2020-08-12 10:46:46 687

原创 复杂度更低的求一个数的所有约数

最简单的想法是对所有小于这个数的数逐个遍历取余是否为0。但是这种方法的复杂度是o(n)的,代码如下:n = int(input())list1 = []for i in range(1,n+1): if n%i==0: list1.append(i)print(list1)做题的时候往往这样复杂度过高,我们将遍历变成(1,n**0.5),求前一半的约数,求出来一个带上n//i(后一半约数中的一个),这样就只用遍历log2(n)的数,复杂度变为o(log(n))。代码如下:

2020-08-12 09:25:51 442 1

原创 剑指offer,变态跳台阶,python版

思路:第i个台阶可以从前i-1个台阶分别跳过了,所以状态转移为dp[i]=sum(dp[0],dp[1],…,dp[i-1])。dp[0]=1,表示所有都可以直接从初始位置跳过来,dp[1]只能从0跳上了,所以dp[1]=1。其他的均可以由状态转移获得。代码如下:def jumpFloorII(self, number): # write code here if number==0: z = 0 elif number==1:

2020-08-09 20:26:54 119

原创 剑指offer,斐波拉契数列(兔子数列),python版

思路:状态转移为dp[i] = dp[i-1]+dp[i-2],需要初始化dp[1],dp[2],根据实际情况dp[1]=1,dp[2]=1。代码如下:def Fibonacci(self, n): # write code here if n == 0: z = 0 elif n == 1: z = 1 else: dp = [0 for _ in range(n+

2020-08-08 22:45:29 459

原创 剑指offer,跳台阶,python版

思路:使用动态规划的思想,dp[i]为可以有多少种方法跳到第i个台阶,第i个台阶可以由第i-1和第i-2台阶跳到,那跳到i的总方法应该是跳到i-1和i-2的方法和。状态转移为dp[i]=dp[i-1]+dp[i-2]。需要初始化dp[1],dp[2]。跳到第一个只有一种方法0-1,跳到第二个有两种方法0-1-2,0-2。所以dp[1]=1,dp[2]=2。代码如下:def jumpFloor(self, number): # write code here if num

2020-08-08 22:41:56 67

原创 网易2021秋招算法笔试排队问题(python)

题目:现在有n个人排队买票,已知早上8点开始卖,每个人有两种买法,单独买第i个人花费a[i]秒;和后面一个人一起买,第i和第i+1个人一共花费b[i]秒。求最早什么时候可以结束排队输入2#样例组数2#排队人数20 25#a[i]40#b[i]1#排队人数8#a[i]输出08:00:40 am08:00:08 am思路:用动态规划求解,dp[i]是第i个人完成排队的最小时间。每个人有两种选择,第一种自己买,第二种和前面一个人一起买,因为是前i个人,所以不能和后面那个人一起买。dp[i]

2020-08-08 21:55:37 1053 3

原创 招行2021提前批史莱姆分裂(python)

题目:你有一个大小为????的史莱姆,每次你可以从你已有的史莱姆中选择一个大小不为1的史莱姆,设他的大小为k,然后把它分裂成????和k−????,其中1≤????<k,这样你获得的收益是????∗(k−????)给定????,????,求最少分裂几次才能得到至少????的收益,如果无法达到输出-1样例:输入:333 43434输出:4思路:看到????∗(k−????),我就想到均分相乘最大,由于数学功底有限不能证明但是确实是这样,无论分几次都希望他分的均匀。逐次计算均分a份获得的收益,

2020-08-08 21:27:06 374

原创 背包问题及其变形及python实现

w = [2,3,4,5](体积)v = [3,4,5,6](价值)s = [13,2,1,1](数量限制)C = 8(体积限制)01背包:(每个物品只有一个)组成一个(len(w)+1)*(C+1)的状态矩阵,矩阵里的数代表你只使用前i个物品,在还有j的剩余容量时可获得的最大价值。(行列分别加1是为了方面状态更新,第一行表示无可放入物品是剩余体积为j对应的价值,均为0。第一列表示在可使用前i个物品时,剩余体积为0对应的价值,均为0)先填第一行,第一个数是在剩余体积为1时只能使用体积2的物品,

2020-08-07 11:15:44 605 1

原创 京东算法笔试(两个子串)

题目描述:给定一个字符串s, 请计算输出含有连续两个s作为子串的最短字符串。 注意两个s可能有重叠部分。例如,“ababa"含有两个"aba”.输入描述:输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母.输出描述:输出一个字符串,即含有连续两个s作为子串的最短字符串。输入abracadabra输出abracadabracadabra思路:遍历比较,要想补的少就要重叠部分越多。要想补一个,就必须第一位到倒数第二位和第二位到最后一位相

2020-08-06 17:32:54 375

原创 京东算法笔试(年终奖)python

小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6*6的矩阵board,其中每个元素为对应格子的礼物价值,左上角为[0,0],请返回能获得的最大价值,保证每个礼物价值大于100小于1000。这是一个动态规划,考虑每一个位置的状态

2020-08-06 16:39:54 475

原创 numpy包的主要函数

生成函数:np.array(list)将输入数据转化为一个ndarraynp.ones(n)生成一个长度为n的,全是1的ndarraynp.zeros(n)生成一个长度为n的,全是0的ndarraynp.eye(n)创建一个n*n的单位矩阵(对角线为1,其余为0)np.arange(num)生成一个从0到num-1步数为1的一维ndarray类似(range)np.where(cond, ndarray1, ndarray2)根据条件cond,选取ndarray1或者ndarray2,返回一个新

2020-08-03 19:50:39 186

原创 各种排序方法与其python实现

一.冒泡排序思路:第一轮:从第一个数和第二个数开始,将较大的那个放在后面,再到第二个和第三个数,一直到最后一个数。就会把最大的数放在数列的最后。第二轮:从第一个数和第二个数开始,将较大的那个放在后面,再到第二个和第三个数,一直到倒数第个数。就会把第二大的数放在数列的倒数第二位。一直到每个数都排列好。def maopao_sort(list): if not list or len(list) <= 1: return list_len = len(list)

2020-08-01 21:58:49 101

原创 科大讯飞2018春招笔试题(改作业)

思路:当错误的比对的多的时候,所有的对时候的的复核费都取消。其他时候对的-错的个复核费被取消。代码如下:list1 = list(map(int,input().split()))list2 = list(map(int,input().split()))a = list2.count(0)b = list2.count(1)if b>a: z = list1[0]*list1[1]-a*list1[2]-b*list1[3]+a*list1[3]else: z =..

2020-07-31 09:10:36 301

原创 科大讯飞2019暑期实习笔试题(改成绩,杀手)

题:华老师的n个学生参加了一次模拟测验,考出来的分数很糟糕,但是华老师可以将成绩修改为[0,100]中的任意值,所以他想知道,如果要使所有人的成绩的平均分不少于X分,至少要改动多少个人的分数?输入:第一行一个数T,共T组数据(T≤10)接下来对于每组数据:第一行两个整数n和X。(1≤n≤1000, 0≤X≤100)第二行n个整数,第i个数Ai表示第i个学生的成绩。(0≤Ai≤100)输出:共T行,每行一个整数,代表最少的人数。思路:使用while循环,avg<x就执行循环,否则跳

2020-07-30 21:05:58 582

原创 二叉树

二叉树的遍历规则:先序遍历:遍历顺序规则为【根左右】中序遍历:遍历顺序规则为【左根右】后序遍历:遍历顺序规则为【左右根】先序:ABCDEFGHK:A是根,看A的左是B遍历到B;再把B看出跟,B左没有B右有便利到C;C作为根,C左是D遍历到D;D作为根什么都没有。A的左边遍历结束,A的右为E遍历到E;E作为根E左没有到E右有F;F作为根,F左是G遍历到G;G作为根节点,G左是H遍历到H,H没有,看G的右看到K遍历到K。中序:BDCAEHGKFA是根,先看A左有B;B做根,B左没有遍历根B,再到

2020-07-29 22:15:46 310

原创 剑指offer,剪绳子,python版

给一正个数从2开始,2可以分为11小于2,3可以是111或者12均小于2。4分为13,1111,121,22均小于等于4(等价于2),到5就有23大于5,到10因数变大(2,5)但是5可以再分成(2,3)。所以优先分成3是最大的,如果省1,就把前一个3拿出来分成2,2。如果剩2就直接乘2。(根据均值不等式,算数平均值不小于几何平均值,因此均分最大)代码如下:def cutRope(self, number): # write code here a = number %

2020-07-29 11:33:41 160

原创 每次让一个数去首位,最终让数组升序排列操作最少

每次可以将一个数组上的一个元组调整到第一位,问为了让他数组升序排列,至少操作几次。每次操作,后面的数到第一位,调位置的数前面的数自然往后退一位。为了少操作,我就想让越大的数约靠后,他们只用退就行。所以只要一个数在这个数组中,前面的数都比他小,那这个数就不用操作,考退就可以按顺序去他的位置。代码如下:list1 = list(map(int,input().split()))a = len(list1)z = 0for i in range(a-1,-1,-1): if list1[i] !

2020-07-29 09:39:39 566

原创 搜狗2020,神奇的数列

定义数列 fn+2 = fn+1 + fn,数列中任何一个元素都是正整数。从定义可以看出,不同的f1、f2会产生不同的数列。假设给定一个数字x(2 <= x <= 2**32),给出这个数字出现在位置i(i >= 3, 数列下标从1开始)的数列个数。这是一个兔子数列,学名斐波那契数列。我先定义一个函数,算x1 = n1,x2 = n2时数量第n个数的大小。def f(n1,n2,n): x1 = n1 x2 = n2 z = [x1,x2] for

2020-07-27 10:00:12 408

原创 剑指offer,旋转数组的最小数字,python版

直接使用min就行def minNumberInRotateArray(self, rotateArray): # write code here if len(rotateArray) == 0: return 0 return min(rotateArray)

2020-07-26 21:30:48 55

原创 剑指offer,数值的整数次方,python版

使用pow(x,y)函数就可以了 def Power(self, base, exponent): # write code here z = pow(base,exponent) return z

2020-07-26 21:05:45 51

原创 剑指offer,调整数组顺序使奇数位于偶数前面,python版

先定义一个奇偶判断函数,然后逐个判断list,将奇数存在list1里,偶数存在list2里,最后将list1+list2def reOrderArray(self, array): # write code here if len(array)==0: return [] def f(x): if x % 2 == 0: z = 0 else:

2020-07-26 21:03:06 69

原创 剑指offer,第一个只出现一次的字符,python版

对str的逐个字符计数,返回第一个符合条件的数的位置,没有符合条件的返回-1. def FirstNotRepeatingChar(self, s): # write code here a = len(s) z = -1 for i in range(a): if s.count(s[i])== 1: z = i break ret

2020-07-26 19:58:28 53

原创 剑指offer,翻转单词顺序列,python版

将序列按空格读成list,再用reverse()函数翻转list,最后用join把list变成str。class Solution: def ReverseSentence(self, s): # write code here if not s: return s list1 = s.split() if len(list1)==0: return s list1.re

2020-07-26 19:47:58 58

原创 剑指offer,左旋转字符串,python版

直接用str[]把字符串分成左右两个,再有后面的加前面的就可以实现旋转。def LeftRotateString(self, s, n): # write code here s1 = s[:n] s2 = s[n:] s3 = s2+s1 return s3

2020-07-26 19:32:55 87 1

原创 剑指offer,和为s的连续正数序列,python版

穷举每个可能的子序列,从2个数的到n个数的,如果子序列的和满足条件,就把存下来。def FindContinuousSequence(self, tsum): # write code here x = range(1,tsum+1) z = [] for i in range(0,tsum): for i2 in range(2,tsum+1-i): y = sum(x[i: i+i2

2020-07-26 17:19:20 52

原创 剑指offer,数组中出现次数超过一半的数字,python版

z =0,对list中的逐个数使用count()函数计数,并与len(list)/2进行比较,只要超过就用数替换z,一个list只有一个可以满足的数,所有只要有满足的z就等于那个数,如果list里的数都不满足则z依然等于0.def MoreThanHalfNum_Solution(self, numbers): # write code here a = len(numbers) x =[] z = 0 for i in ra

2020-07-26 15:37:36 76

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除