自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1996MZH的博客

兴趣方向:深度学习 pytorch python 自然语言处理

  • 博客(301)
  • 收藏
  • 关注

原创 用Python实现堆排序(左程云老师JAVA代码的python实现)

我买的牛客网正版的《算法入门与基础提升》这是2.6节的重要内容:堆排序的实现本文实现的是大根堆用动态数组实现即 录入(调用heap_insert方法)时总保持动态数组的index=0位置为最大值返回最大值(调用pop_max方法)时,将[0]返回,并将[0]与[有效长度-1]互换,然后将更换位置后的新[0]和自己的孩子们比,小的下沉,大的变为[0]此后循环,直至孩子们不比自己大,或已沉底class Heap:#大根堆 def __init__(self,N): sel

2020-07-01 23:27:58 243

原创 使用HuggingFace的Transformers库的学习笔记(pipeline实战+官方readme文件的解读)

https://github.com/huggingface/transformerstransformers主要包含以下这些类安装pip install transformers#并安装pytorch或tf2.0中的至少一个包含的模型结构BERT (from Google) released with the paper BERT: Pre-training of Deep Bidirectional Transformers for Language Understandi.

2020-06-29 20:56:11 12372 6

原创 用Python实现归并排序算法

归并排序算法的步骤是如,对[1, 2, 4, 9, 3, 55, 25, 64]对分,对左半边和右半边进行递归递归的终止条件是输入list的长度为1如,对[11, 2, 4, 9, 3, 55, 25, 64]中其左半边不断对分后为[11, 2, 4, 9][11, 2][11] [2]然后对二者进行mergemerge的规则是开辟一个额外空间设置左右指针,分别指左右半边的start将更小的放在空间左边process(arr,l,.mid)process(arr,mid+1,

2020-06-22 23:59:28 721

原创 用Python实现图结构和图结构的常见方法【未完待续】

本文为左神《算法入门与基础提升》课中“第六节 图结构”的总结左神用java实现的本人比较熟悉python用python写了一遍#节点的类class Node: def __init__(self,value=0,n_in=0,n_out=0,nextlist=[],edgelist=[]): self.val = value#该node的值 self.n_in = n_in#该node的入度,即有多少边连向这个node self.n_out

2020-06-18 21:51:20 1027

原创 面试题中python的几种常用功能函数的实现(长期更新)

1、Partition函数 def Partition(self,inputlist,start,end,value): #这个函数把inputlist里比value大的元素放其右边,把比value小的元素放其左边 #定义:指针cur:表示当前的游标 #定义:指针small:表示前small个数确保比value小。初值:start - 1 ...

2020-04-12 15:46:49 227

原创 Leetcode刷题记录——174. 地下城游戏(思路已补充,附严格数学推导)

考虑动态规划的方法代码调通了,明天补充思路!class Solution: def calculateMinimumHP(self, dungeon: List[List[int]]) -> int: m = len(dungeon) n = len(dungeon[0]) if m == 1 and n == 1:#1x1的地牢...

2020-03-27 00:41:59 251

翻译 总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)

参考pytorch官方文档https://pytorch.org/docs/master/nn.html#torch.nn.LSTM先上原图| 这里是关键参数介绍input_size:输入特征的数目hidden_size:隐层的特征数目num_layers:这个是模型集成的LSTM的个数 记住这里是模型中有多少个LSTM摞起来 一般默认就1个bias:用不用偏置 默认是用bat...

2019-05-06 20:14:54 9736 3

转载 【转载】mysql快速教程

https://mp.weixin.qq.com/s/XF56o9RNdJkOgQ3fEP4yAA本教程来源于上述链接,即为《20000 字干货笔记,一天搞定 MySQL !》-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显示数据库中的所有表show tables;-- 创建数据表CREATE TABLE pet ( name VARCHAR(20), ow.

2020-09-20 21:31:15 1068

原创 test

import matplotlib.pyplot as pltclass kmeans: def __init__(self,k,n,node_list,iterations): self.k = k self.n = n self.all_nodes = node_list self.iter = iterations self.center = [] self.res = []

2020-09-01 22:24:08 246

原创 python手写kmeans 简单易懂xxx

import matplotlib.pyplot as pltclass kmeans: def __init__(self,k,n,node_list,iterations): self.k = k self.n = n self.all_nodes = node_list self.iter = iterations self.center = [] self.res = []

2020-08-22 11:35:26 462

原创 牛客网编程题——纸牌游戏(很无语的一道题)

以为 是博弈的从两边拿结果是随便拿毫无技术含量n = int(input())l = [int(val) for val in input().split(' ')]l = sorted(l,reverse= True)index = 0jia = 1suma = 0sumb = 0while index < len(l): if jia == 1: suma += l[index] jia = 0 else: s.

2020-08-12 21:56:32 824

原创 牛客网编程题——第4节 课后作业1-调整队形

可能的结果只有两种即 所有G在左侧或所有B在左侧alist = [a for a in input()]t1 = 0t2 = 0index = 0lastGindex = 0while lastGindex <= len(alist) - 1 and 'G' in alist[lastGindex:]: G_index = alist.index('G') alist[G_index] ='g' t1 += G_index - index index.

2020-08-11 00:54:52 115

原创 Leetcode刷题记录——剑指 Offer 53 - II. 0~n-1中缺失的数字

class Solution: def missingNumber(self, nums: List[int]) -> int: start = 0 end = len(nums) - 1 if nums[0] != 0: return 0 while start <= end: mid = start + ((end-start)>>1) .

2020-08-07 23:21:40 189

原创 Leetcode刷题记录——441. 排列硬币

二分class Solution: def __init__(self): self.d = {} def arrangeCoins(self, n: int) -> int: if n == 0: return 0 if n == 1: return 1 elif n == 3: return 2 start = 0 .

2020-08-07 23:16:08 116

原创 Leetcode刷题记录——392. 判断子序列

动态规划建立dp表格m行n列m为s的长度n为t的长度只填主对角线及其右上部分dp[i][j]==2表示s[:i]恰是t[:j]的子串== 1 表示s[:i]是t[:j]的子串且是t[:j-1]的子串==0表示 s[:i]不是t[:j]的子串先将第一行填好我们为第一个重合的位置填2 后续填1对于第二行到第m行如果dp[i][j-1] >=1 即s[:i]是t[:j-1]的子串则s[:i]一定是t[:j]的子串 即dp[i][j] = 1否则如果s[i] == t[j] .

2020-08-07 00:55:09 182

原创 Leetcode刷题记录——剑指 Offer 35. 复杂链表的复制

分为三步第一在原链表的每个节点后面 复制一个与该节点值相等的节点 这个复制节点的random可以先不管 默认为None第二将每个原本的节点的next(即刚刚复制出的节点) 指向原本节点的random的next(原本的节点的random的next是原本节点的random指向的节点所对应的复制节点)第三只保留所有复制出的节点将原本的节点都断连最后返回第一个复制节点"""# Definition for a Node.class Node: def __init__(self, ..

2020-08-06 23:59:57 664

原创 Leetcode刷题记录——剑指 Offer 24. 反转链表

三指针法记住 不需要伪头指针先对长度小于等于2 的链表进行特殊处理对于更普通的长链表三个指针初始分别指前三个 允许第三个是None先把头指针的next指空然后在cur3不是None的时候让cur2的next指cur1然后依次将cur1指向cur2cur2指向cur3cur3指向cur3的next最后将cur2的next指向cur1返回cur2# Definition for singly-linked list.# class ListNode:# def __in.

2020-08-06 23:49:31 115

原创 牛客网编程题——牛牛的背包问题

注意 返回到上一层的值 只能是自己或由自己一条子树返回的值# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None## # @param root TreeNode类 # @return int整型#class Solution: def __init__(self): s...

2020-08-06 00:22:11 193

原创 牛客网编程题——牛牛的背包问题

注意 当所有零食的体积和小于等于容积时直接返回2^nl = [int(val) for val in input().split(' ')]n = l[0]w = l[1]s = [int(val) for val in input().split(' ')]s = sorted(s)suma = 0def rec(last_used_space,rest,n,w): global suma if rest == [] and last_used_space <= .

2020-08-06 00:14:56 254

原创 牛客网编程题——字符串交错

三指针遇到相同的时候 可能是用A的第i个 有可能是用B的第j个递归 or即可# -*- coding:utf-8 -*-class Mixture: def chkMixture(self, A, n, B, m, C, v): # write code here if n + m != v: return False if n == 0: return True if A == C else.

2020-08-05 23:06:07 86

原创 牛客网编程题——容器装水

先找两端点 也就是说如果原数组是单增或单减的 结果就是0然后统计每个位置左侧最大的数和右侧最大的数当前位置的储水量为min(leftmax,rightmax)-自己的高度n = int(input())l = [int(val) for val in input().split(' ')]startx = -1endx = -1for i in range(len(l)-1): if l[i] > l[i+1]: startx = i + 1 ...

2020-08-05 01:09:14 531

原创 牛客网编程题——斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here if n == 0: return 0 elif n == 1: return 1 f1 = 0

2020-08-05 00:33:37 218

原创 牛客网编程题——二维双向递增数组找目标值

# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here rows = len(array) cols = len(array[0]) startx = rows - 1 starty = 0 while startx >= 0 and start.

2020-08-05 00:21:53 119

原创 牛客网编程题——成绩排序(堆排序)

本题最大的难点不是题目本身而是如何处理牛客网的多组流数据输入输出from heapq import * while True: try: n = int(input()) direction = int(input()) heap = [] score_dict = {} for _ in range(n): l = input().split(' ') this_.

2020-08-05 00:16:28 353

原创 牛客网编程题——牛牛的数列(至多调整一个得到的最长上升子区间)

先找到所有上升区间的起始位置索引存为[(start1,end1),(start2,end2),…]然后从上面第二个区间开始 依次探讨和其前一个区间合并的可能性假设原数组为l合并的条件是start2 = end1 + 1 and l[end1] > l[start2] and l[end1] < l[start2+1]或start2 = end1 + 1 and l[end1] > l[start2] and l[end1-1] < l[start2]当满足上述条件.

2020-08-04 23:13:29 355

原创 牛客网编程题——最长公共连续子串

二阶DPDP[i][j]的意义是s1和s2之间以s1[i]和s2[j]位置元素为结尾的连续公共子串长度最后取DP中最大的数即可s1 = input()s2 = input()m = len(s1)n = len(s2)dp = []for _ in range(m): dp.append([0 for _ in range(n)])maxa = 0#先填第一行for i in range(n): if s1[0] != s2[i]: continue.

2020-08-04 01:07:17 263

原创 牛客网编程题——操作序列

从原数组的末尾往前2个2个跳 然后再跳向末尾 同样是2个2个跳n = int(input())l = input().split(' ')resstr = ''index = n - 1if n % 2 == 0: while index >= 1: resstr += l[index] resstr += ' ' index -= 2 index = 0 while index < n - 1: .

2020-08-04 00:25:02 142

原创 牛客网编程题——组装三角形

按照两数之和的思想解n = int(input())l = [int(val) for val in input().split(' ')]l = sorted(l)nums = 0for i in range(n-2): for j in range(i+1,n-1): pre_sum = l[i] + l [j] for k in range(j+1,n): if pre_sum > l[k]: .

2020-08-03 23:59:09 886

原创 牛客网编程题——循环单词

判断循环字符串的简单方法如果a和b是互为循环字符串则a in b+bn = int(input())res = []for _ in range(n): res.append(input())all_word = set()suma = 0def check(old,this): if old in this+this and len(old)==len(this): return True else: return Falsefo.

2020-08-03 23:49:43 182

原创 两两配对差值最小 拼多多[编程题](python AC解)

n = int(input())l = [int(val) for val in input().split(' ')]l = sorted(l)mina = Nonemaxa = Nonefor i in range(n//2): tempres = l[i] + l[-(i+1)] mina = tempres if mina == None else min(mina,tempres) maxa = tempres if maxa == None else max..

2020-08-02 18:38:21 409

原创 选靓号 拼多多[编程题](python 95%解)

95%通过率l1 = input().split(' ')original_str = input()strl2 = list(original_str)l2 = [int(val) for val in strl2]n,k = int(l1[0]),int(l1[1])#一共n位#需要有k个相同all_val = []diff = 0for each in l2: if each not in all_val: all_val.append(each) ..

2020-08-02 18:12:17 351

原创 骰子期望 拼多多[编程题](python AC解)

思路都写在注释里了n = int(input())x = input().split(' ')res = []maxlen = 0for each in x: this_x = int(each) maxlen = max(maxlen,this_x) tempres = [(1/this_x) for _ in range(this_x)] res.append(tempres)for i in range(len(res)): while len(r.

2020-08-02 11:02:51 626

原创 多多的排列函数 拼多多[编程题]

找规律求最小值 只需要从大到小排列(从1开始 最小值的规律是1 1 0 0 1 1 0 0 … )求最大值 只需要将最大的N放在最后一个 前面N-1个 是 MID,MID+1,…,N-1,MID-1,… 1即可从1开始 最大值规律是 i i-1 i-1 i i i-1 i-1 …找规律即可得 得到如下代码n = int(input())for _ in range(n): N = int(input()) if N%2==0: minres = 0 if (N..

2020-08-01 10:25:55 415

原创 多多的魔术盒子 拼多多[编程题]

多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。那么请问聪明的你,是否已经知道了应该如何操作呢?输入描述:第一行,有1个整数T,表示测试用例的组数。(1 <= T <= 100)接下来T行,每行1个整数N,表示有N个魔术盒子。(1 &

2020-08-01 09:35:28 1879

原创 [编程题]牛妹打怪兽(牛客网编程题)的动态规划AC解

链接:https://www.nowcoder.com/questionTerminal/5c5fa5bf2a9942fcb1a3844d715087b9来源:牛客网众所周知,牛妹非常喜欢打游戏,在阳光明媚的一天,她在玩一个叫做打怪兽的游戏。也许您已经知道游戏“打怪物”。如果您不知道,没关系,让我现在告诉您,森林里有那么多怪物,您就是攻击怪物并保护村庄的英雄。为了简化问题,我们把怪物排成一行,怪物身上有很多攻击点,你有一把剑,只能切掉攻击点,当切掉一个攻击点时,怪物会分裂成两个在段中,您必须消耗与怪

2020-08-01 09:13:59 1005

原创 Leetcode刷题记录——437. 路径总和 III

递归 全局变量记录数目用一个数组记录此前达到的所有结果值每次都在以前的结果上 加上当前root的val加完 如果右等于目标值的 全局变量+1而最后还需要单独加入一个root的val元素再递归下一层返回全局变量class Solution: def __init__(self): self.res = 0 self.target = 0 def pathSum(self, root: TreeNode, sum: int) -> int: .

2020-07-30 00:28:48 105

原创 Leetcode刷题记录——152. 乘积最大子数组

注意,本题容易想复杂题目保证输入是整数数组因此不存在像[0.01,1,-57,-56,0.01,1]这种傻逼案例记住:本体的答案子数组一定要么是从左边 要么是从右边开始的因为 所有元素都是整数 或正或负或0我们先假设 不会遇到0假设全正 那么一定是整个数组的连乘如果有奇数个负数如果是1个负数我们只需要计算这1个负数左侧和右侧的连乘结果即可 此时结果一定是要么是从左边 要么是从右边开始的如果是3个或以上(假设是m个)负数我们只需要找到从左边开始 到第m个负数左侧(不含)的结果 的连乘.

2020-07-29 00:35:35 119

原创 Leetcode刷题记录——1302. 层数最深叶子节点的和

# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def __init__(self): self.res = [] self.length = 0 de.

2020-07-27 22:21:46 104

原创 Leetcode刷题记录——剑指 Offer 41. 数据流中的中位数

我们将数据分开存储用两个小根堆一个存数据流偏小的半段一个存数据流偏大的半段如何实现呢python中的heapq是默认的小根堆 也就是每次都弹出最小的元素那么我们用它来存储偏大的半段 则我们每次都可以吐出偏大一段的最小值要构造偏小、且能随时吐出自身中最大元素的半段我们还是用另一个小根堆B代替 只不过在记录数据的时候有一些技巧我们在每次录入时进行检查如果小根堆A和大跟堆B长度相等则我们将元素先取相反数然后录入B然后再将它吐出后取反录入A如果二者长度不等我们先将元素录入A然后从A中.

2020-07-26 12:22:27 118

原创 Leetcode刷题记录——剑指 Offer 12. 矩阵中的路径

class Solution: def __init__(self): self.history = set() def exist(self, board: List[List[str]], word: str) -> bool: if board == [] or board[0] == []: return False m = len(board) n = len(board[0]) .

2020-07-26 01:29:33 119

空空如也

空空如也

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

TA关注的人

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