自定义博客皮肤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 自然语言处理

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

原创 面试题中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 287

原创 Leetcode刷题记录——63. 不同路径 II

参考我的另一篇https://blog.csdn.net/weixin_41545780/article/details/105775225?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158826197219724848362654%2522%252C%2522scm%2522%253A%252220140713.1301...

2020-04-30 23:53:34 135

原创 Leetcode刷题记录——61. 旋转链表

假设输入链表长度为L向右移动K个位置等价于k = K % L把从倒数第k个节点开始剩余部分挪到头结点的前边,令倒数第k-1个节点指空# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next =...

2020-04-30 13:43:03 120

原创 Leetcode刷题记录——48. 旋转图像

参照我的另一篇博客https://blog.csdn.net/weixin_41545780/article/details/105488303class Solution: def rotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modif...

2020-04-30 13:28:57 152

原创 Leetcode刷题记录——49. 字母异位词分组

将字符串排序然后制作hash表class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: newlist = [] for thisstr in strs: temp = '' thisstr = sort...

2020-04-30 13:19:24 164

原创 Leetcode刷题记录——43. 字符串相乘

class Solution: def multiply(self, num1: str, num2: str) -> str: if num1 == '0' or num2 == '0': return '0' #尾对齐 len1 = len(num1) len2 = len(num2) ...

2020-04-30 12:50:40 119

原创 Leetcode刷题记录——40. 组合总和 II

参照,微修即可:https://blog.csdn.net/weixin_41545780/article/details/105859114class Solution: def __init__(self): self.res = [] self.mina = None self.hashdict = {} def co...

2020-04-30 12:40:31 125

原创 Leetcode刷题记录——39. 组合总和

采用回溯法class Solution: def __init__(self): self.res = [] self.mina = None self.hashdict = {} def combinationSum(self, candidates: List[int], target: int) -> List[Li...

2020-04-30 12:36:42 128

原创 Leetcode刷题记录——36. 有效的数独

class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: #行 for i in range(9): thishash = {} for j in range(9): if board...

2020-04-30 11:52:55 124

原创 Leetcode刷题记录——33. 搜索旋转排序数组(暨 二分查找总结)

class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: length = len(nums) if length < 1: return [-1,-1] elif length == 1: ...

2020-04-30 09:50:59 151

原创 Leetcode刷题记录——33. 搜索旋转排序数组

注释写的很详细class Solution: def search(self, nums, target): #因为排序后[MIN,...,MAX] #旋转后[x,...,MAX,MIN,...,y] #如果target在前半部,说明x<=target<=MAX #如果target在后半部,说明MIN<=...

2020-04-30 01:04:54 165

原创 Leetcode刷题记录——31. 下一个排列

此题比较难考虑我们这样想:先考虑最难搞的情况 也就是题目中所说的“不存在更大的排列”此时,输入是全递减序列这时,我们只需要把原数组倒序即可接下来我们考虑一般的情况,也就是存在更大的排列此时,我们只需要把比输入序列组成的N位数中大于原顺序的N位数最小的数即可如 比1 3 2 更大的 数里 最小的 是 2 1 3为了实现这个功能我们观察序列的末尾部分,如果末尾是升序例如 2 1 ...

2020-04-29 23:18:28 266

原创 Leetcode刷题记录——29. 两数相除

我们模拟小学列竖式的方法将数字转化为字符串从高位开始 逐位计算class Solution: def divide(self, dividend: int, divisor: int) -> int: res = 0 isNeg = False if dividend < 0: isNeg = no...

2020-04-29 21:14:10 109

原创 Leetcode刷题记录——24. 两两交换链表中的节点

依然是伪头指针的妙用我们在最前面插入一个伪头指针然后 从第一、二个指针开始交换循环截止条件是 最后一个交换完的后指针的next和next.next中有None最后返回伪头指针的next# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val...

2020-04-29 09:26:53 126

原创 Leetcode刷题记录——22. 括号生成

我们的规则是 在一个未完成的序列中"(“的个数一定要大于等于”)"的个数且“(”的个数要小于等于n当“(”的个数小于n时若 "(“的个数大于”)“的个数可以都填若”(“的个数等于”)"的个数只能填)当“(”的个数小==n时只能填)当序列长度 = 2n时 记录结果class Solution: def __init__(self): self.res ...

2020-04-29 09:19:42 143

原创 Leetcode刷题记录——19. 删除链表的倒数第N个节点

建立伪头指针 指向原头指针以防止原头指针指向的节点为待删除节点其余easy# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def ...

2020-04-29 09:08:35 148

原创 Leetcode刷题记录——18. 四数之和

思路:模仿三数之和 只不过是外面再加一层嵌套class Solution: def fourSum(self, nums, target) : length = len(nums) res = [] hash_res = {} remove = False if length == 4: ...

2020-04-29 00:59:54 145 1

原创 Leetcode刷题记录——17. 电话号码的字母组合

我们先记录每一次按键对应的若干个按键(每一个记录为一个list)然后 模仿全排列回溯法的求解方法我们依次从每一个list中取一个当取的个数==按键个数时记录取的结果至一个res中最后返回最终的resclass Solution: def letterCombinations(self, digits: str) -> List[str]: if dig...

2020-04-28 23:59:26 386

原创 Leetcode刷题记录——16. 最接近的三数之和

采用的思路是 固定一个数字 + 双指针a + b + c - target = res的绝对值尽量小也就是 首先固定一个a,这里遍历即可然后 对于a后面部分的数组,弄一个头指针和尾指针然后两个往中间挪 方向取决于如何让res的绝对值更小class Solution: def threeSumClosest(self, nums: List[int], target: int) ...

2020-04-28 23:30:57 155

原创 Leetcode刷题记录——12. 整数转罗马数字

思路:直观的贪心算法我们把所有可能的基数[1000,900,500,400,100,90,50,40,10,9,5,4,1] 以及它们对应的字母先列好然后从最大的开始,每次用剩余值-基数 编译 直到剩余值= 0class Solution: def intToRoman(self, num: int) -> str: remdict = { ...

2020-04-28 22:33:01 125

原创 Leetcode刷题记录——279. 完全平方数

思路:使用自底向上的动态规划算法对于完全平方数,如n=25, return 1即可对于其它的数,首先找到比输入数字小的最大的平方数k如,输入的n是12,则找到的是k=9则,dp[n] = min(dp[n-1] + 1,dp[n-4] + 1,dp[n-9] + 1,…,dp[n-k]+1)class Solution: def numSquares(self, n: in...

2020-04-26 19:43:48 200

原创 Leetcode刷题记录——62. 不同路径

简单的动态规划问题class Solution: def uniquePaths(self, m: int, n: int) -> int: #明显的动态规划问题 #当机器人处于什么位置时路径唯一呢? #因为只能下/右移 #故dp[-1][_] == 1 AND dp[_][-1] == 1 dp ...

2020-04-26 19:16:28 166

原创 Leetcode刷题记录——6. Z 字形变换

我的思路直观地定义一个res = []用于盛放每一层的字符串如对于示LEETCODEISHIRINGres = [‘LDR’,‘EOEII’,‘ECIHN’,‘TSG’]怎么做呢 很简单 我们还是从输入字符串的头部开始 遍历然后弄一个方向指示符dira 告知s[i]在res存储时是应该向下存还是向上class Solution: def convert(self, s:...

2020-04-26 18:05:22 157

原创 Leetcode刷题记录——5. 最长回文子串

我们提供两种思路:1、更为直观的“中心向外扩散法”因为回文串 要么是形如“…xx…”要么是形如“…xax…”因此我们首先遍历一遍字符串s,找到所有符合a[i] == a[i+1] 的i 记录到list1 中再找所有符合a[i-1] == a[i+1]的i,记录到list2中然后 对list1 和list2 中 的 i 我们分别从该处开始 安排两个指针 向两边扩散终止条件为 要么...

2020-04-23 18:27:24 110

原创 Leetcode刷题记录——486. 预测赢家

思路:此题难点在于如何定义动态规划的子问题我们定义dp[i][j]为,当前从[i,j](注意 闭区间)拿的选手若想赢,则要比对方多多少分于是若i=j则 当前选手只能拿一个 则dp[i][i+1] = a[i]若i +1= j则当前选手只能从首尾选一个则选更大的那个(相等则随便选 因为此时是先手赢)dp[i][i+1] = max(a[i],a[i+1])考虑三个的情况 即i ...

2020-04-23 17:18:27 179

原创 Leetcode刷题记录——11. 盛最多水的容器

双指针法 一个指头 一个指尾每次都将更小的一个往中间移若相等 移谁都行class Solution: def maxArea(self, height: List[int]) -> int: start = 0 length = len(height) end = length - 1 maxa = 0 ...

2020-04-23 01:01:32 115

原创 某互联网公司面试题——糖果游戏

先解决一个问题:如果我们制定小明一开始只能从首尾取(不可以从中间任取)则转化为以下问题https://blog.csdn.net/weixin_41545780/article/details/105658001在解决了以上问题的基础上,我们只需要每次都改变数组的顺序,并保留最大的结果即可代码:def PredictTheWinner(nums): length = ...

2020-04-21 15:52:16 171

原创 Leetcode刷题记录——15. 三数之和

此题难点在于如何定义动态规划的子问题,并建立求解方程对于动态规划的问题,我们还是先将问题简化假设环的长度=1,也就是只有一个糖果则一定是先手的人赢,且赢的分数就是那个糖果的值A[0]假设环的长度=2,也就是有两个糖果则也一定是先手的人赢,且赢的分数一定是两个糖果中更大的那个减去更小的那个,若两个糖果数额相等则返回0,根据定义还是先手赢假设环的长度=3,则需要看从哪边选了,这里,之前一...

2020-04-21 14:55:04 177

原创 Leetcode刷题记录——42. 接雨水

此题的关键在于一个位置能存储的最大水量 等于 min(当前位置左侧最大的值,当前位置右侧最大的值)-当前位置的值想明白这个道理后,一切就容易了class Solution: def trap(self, height: List[int]) -> int: if set(height) == {0}: return 0 ...

2020-04-20 23:08:09 150

原创 Leetcode刷题记录——面试题 03.06. 动物收容所

class AnimalShelf: def __init__(self): self.dog = [] self.cat = [] #self.index = 0 def enqueue(self, animal: List[int]) -> None: #self.index += 1 ...

2020-04-20 13:12:28 173

原创 Leetcode刷题记录——面试题 03.05. 栈排序

class SortedStack: def __init__(self): self.main = [] self.ass = [] def push(self, val: int) -> None: if self.main == [] or self.peek() >= val: se...

2020-04-20 12:54:46 184

原创 Leetcode刷题记录——面试题 03.04. 化栈为队

设置一个辅助栈class MyQueue: def __init__(self): """ Initialize your data structure here. """ self.main = [] self.ass = [] def push(self, x: int) -> No...

2020-04-20 12:22:15 147

原创 Leetcode刷题记录——面试题 03.03. 堆盘子

class StackOfPlates: def __init__(self, cap: int): self.a = [] self.lengthlist = [] self.limit = cap def push(self, val: int) -> None: if self.limit == 0...

2020-04-20 12:09:45 181

原创 Leetcode刷题记录——面试题 03.02. 栈的最小值

考虑双栈一个存储数据一个存储每个位置的最小值class MinStack: def __init__(self): """ initialize your data structure here. """ self.val_stack = [] self.min_stack = [] de...

2020-04-20 11:38:14 128

原创 Leetcode刷题记录——面试题 03.01. 三合一

本题我以一种工程性的解法实现具体而言我先建立一个长为3Xlength的list 首尾相接盛放三个栈然后设置三个指针,分别统计每个栈里面已经有的元素的个数根据输入的stacknum,我们使用 或 修改对应的指针这里,用getattr(self,'这里写待获取的私有变量的名字')setattr(self,'这里写待修改的私有变量的名字',这里写赋值的数字)class TripleI...

2020-04-20 11:27:13 209

原创 Leetcode刷题记录——204. 计数质数

思路:首先我们建立一个长度为n的list然后我们只需要在[1,sqrt(n)+1]内找到所有的质数然后将这些质数在n以下的所有倍数找到然后将list中索引值为所有的这些倍数的位置记作0最后统计这个list中1的个数即可class Solution: def __init__(self): self.zhilist = [] def countPrim...

2020-04-18 18:50:11 107

原创 Leetcode刷题记录——203. 移除链表元素

本题采用伪头指针的方法,利用双指针进行删除节点其实 删除节点并非难题,本题的难题是如何处理头节点就是待删除元素的链表为此,我们设立一个伪头指针faker令faker的值为val+1,令faker的next纸箱head,这样保证faker一定是链表中第一个不需要删除的节点下面的工作就是用cur和last双指针进行操作最后返回faker的next# Definition for sin...

2020-04-18 15:58:54 142

原创 Leetcode刷题记录——202. 快乐数

一开始没有找到规律于是想用暴力莽夫方法,直接进行计算但是被困在了跳出条件上,也就是说我们如何判断是否陷入到无限循环中于是我想先设定一个最大递归深度次数N若递归次数大于N 则跳出 返回False一开始 我把N设为100 发现已可以AC 但时间排名很低于是我将N缩至50,甚至 5 都可以AC当N 取 4 或更小时,发现不能AC于是我在想 为什么只需要递归N=5次可以对所有样例进行判...

2020-04-18 15:09:55 268

原创 Leetcode刷题记录——60. 第k个排列

我们求第k个排列是所有以第m个元素为开头的排列中的第n个排列假设jiecheng = (n-1)!m = int(k // (jiecheng))n = int(k % (jiecheng))然后只打印以以第m个元素为开头的排列的第n个即可import copyclass Solution: def __init__(self): self.res = 0 ...

2020-04-15 17:25:06 154

原创 Leetcode刷题记录——59. 螺旋矩阵 II

模仿我自己下面这篇的方法https://editor.csdn.net/md/?articleId=105531300class Solution: def generateMatrix(self, n: int) -> List[List[int]]: res = [] for i in range(n): temp...

2020-04-15 14:25:21 108

空空如也

空空如也

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

TA关注的人

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