自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ma Sizhou

好记性不如烂笔头

  • 博客(192)
  • 资源 (3)
  • 收藏
  • 关注

原创 剑指 Offer 03. 数组中重复的数字(python3编写)

三种方法实现:数组中重复的数字。

2022-01-28 16:51:30 715 2

原创 剑指 Offer 30. 包含min函数的栈(python3编写)

目录1、题目描述:2、方法:思路:代码:1、题目描述:2、方法:思路:思路来源:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/solution/mian-shi-ti-30-bao-han-minhan-shu-de-zhan-fu-zhu-z/普通栈的 push()push()push() 和 pop()pop()pop() 函数的复杂度为 O(1)O(1)O(1) ,而获取栈最小值 min()min().

2022-01-28 15:26:16 695

原创 剑指 Offer 09. 用两个栈实现队列(python3编写)

目录1、题目描述:2、方法:思路:代码:1、题目描述:2、方法:思路:维护两个栈,第一个栈支持插入操作,第二个栈支持删除操作。根据栈先进后出的特性,我们每次往第一个栈里插入元素后,第一个栈的底部元素是最后插入的元素,第一个栈的顶部元素是下一个待删除的元素。为了维护队列先进先出的特性,我们引入第二个栈,用第二个栈维护待删除的元素,在执行删除操作的时候我们首先看下第二个栈是否为空。如果为空,我们将第一个栈里的元素一个个弹出插入到第二个栈里,这样第二个栈里元素的顺序就是待删除的元素的顺序,要.

2022-01-27 18:20:57 298

原创 剑指 Offer 58 - II. 左旋转字符串(python3编写)

目录1、题目描述:2、方法一:使用额外空间思路:代码:3、方法二:三次翻转思路:代码:1、题目描述:2、方法一:使用额外空间思路:最直接的想法是:把字符串从k=n的地方分开,然后把前面的一部分拼接到第二部分的后面,这样的话,我们可以使用一个新的空间来做这种调整。(这个方法不足以拿到offer,能不用就不用)。python的话直接使用切片就可以了,代码如下。代码:class Solution: def reverseLeftWords(self, s: str, n: int).

2022-01-27 18:04:04 1032

原创 剑指 Offer 50. 第一个只出现一次的字符(python3编写)

三种方法实现:剑指offer50.第一个只出现一次的字符

2022-01-27 16:57:39 6294

原创 剑指 Offer 05. 替换空格(python3编写)

三种方法实现替换空格

2022-01-27 11:14:00 288

原创 剑指 Offer 35. 复杂链表的复制(python3编写)

剑指 Offer 35. 复杂链表的复制(python3编写)

2022-01-27 10:01:13 1248

原创 剑指 Offer 24. 反转链表(python3编写)

剑指 Offer 24. 反转链表

2022-01-26 16:36:26 2320

原创 剑指 Offer 06. 从尾到头打印链表(python3编写)

剑指 Offer 06. 从尾到头打印链表(python3编写)

2022-01-26 15:31:32 984

原创 leetcode(力扣)上如何自己构造二叉树输入用例?(python写法)

力扣上如何自己构造二叉树输入用例?

2021-12-23 18:39:40 5422 3

原创 leetcode笔记总结——(18)二叉树的前、中、后序遍历(python编写)

力扣地址:前序遍历.中序遍历.后序遍历.三种遍历的统一写法:1、思路:我们以中序遍历为例,因为使用栈的话,无法同时解决访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况。那我们就将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记。如何标记呢,就是要处理的节点放入栈之后,紧接着放入一个空指针作为标记。 这种方法也可以叫做标记法。2、代码:详细的思路在注释中。。。。。。(1)前序遍历:# Definition for a binary tree.

2021-10-26 20:27:32 153

原创 leetcode笔记总结——(17)求两个数组的交集(python编写)

力扣题目链接.目录1、题目描述:2、实现思路及代码:2.1 思路一:2.2 思路二:1、题目描述:2、实现思路及代码:2.1 思路一:使用集合:去重排序,然后位运算。(总感觉使用了人家写好的。。。)代码如下:class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: return list(set(nums1) & set(.

2021-10-09 21:51:23 133

原创 leetcode笔记总结——(16)环形链表(python编写)

力扣题目链接.目录1、题目描述:2、实现思路:2.1 方法一思路:2.1 方法二思路:3、代码描述(python):3.1 方法一的代码:3.1 方法二的代码:1、题目描述:2、实现思路:2.1 方法一思路:一个非常直观的思路是:我们遍历链表中的每个节点,并将它记录下来;一旦遇到了此前遍历过的节点,就可以判定链表中存在环。借助哈希表可以很方便地实现。(代码在下面)。2.1 方法二思路:快慢指针:第一步:判断链表是否有环。可以使用快慢指针法, 分别定义 fast 和.

2021-10-09 20:51:44 139

原创 leetcode笔记总结——(15)面试题:链表相交(python编写)

力扣题目链接目录1、题目描述:2、实现思路:3、代码描述(python):1、题目描述:2、实现思路:A长度为 a, B长度为b, 假设存在交叉点,此时 A到交叉点距离为 c, 而B到交叉点距离为d后续交叉后长度是一样的,那么就是 a-c = b-d ------> a+d = b+c。这里意味着只要分别让A和B额外多走一遍B和A,那么必然会走到交叉,注意这里边缘情况是,大家都走到null依然没交叉,那么正好返回null即可。上述的思路是:指向A的指针curA把A链表走完.

2021-10-08 20:51:00 120

原创 leetcode笔记总结——(14)螺旋数组(python编写)

力扣题目链接目录1、题目描述:2、实现思路:3、代码描述:1、题目描述:2、实现思路:直接模拟矩阵的生成。按照要求,初始位置设为矩阵的左上角,初始方向设为向右。若下一步的位置超出矩阵边界,或者是之前访问过的位置,则顺时针旋转,进入下一个方向。如此反复直至填入 n2n^2n2个元素。我是这么标记的:首先上、下、左、右,各标记一个变量,每循环一圈,左和上加一,而右和下则减一。注意边界:(1)当n=1时,单独判断;(2)n为奇数时,最中间的一个数要单独填充。3、代码描述:clas.

2021-09-27 22:05:56 197

原创 动态规划算法练习——11、一和零(多一个维度的0-1背包问题,python描述)

本题的力扣链接:https://leetcode-cn.com/problems/ones-and-zeroes/目录1、题目描述:2、思路:3、代码:3.1 python代码:4、总结:1、题目描述:2、思路:官方的思路。。。3、代码:3.1 python代码:class Solution: def findMaxForm(self, strs: List[str], m: int, n: int) -> int: # dp[i][j][k]表示.

2021-09-23 21:10:48 175

原创 动态规划算法练习——10、目标和(求装满背包有⼏种⽅法,python和C++描述)

本题的力扣链接:https://leetcode-cn.com/problems/target-sum/目录1、题目描述:2、思路:3、代码:3.1 python代码(回溯法):3.2 python代码:3.3 C++代码:4、总结:1、题目描述:2、思路:这道题首先一看,好像可以使用回溯搜索法,把所有的情况找出来,然后相加看是不是为target,若是,则计数器加1。这种思想很朴素,但是,会超时。但是也需要会编写程序啊,我把官方的贴过来吧。是C++代码。下面是官方给的回溯法的思路:.

2021-09-21 21:33:13 228 2

原创 动态规划算法练习——9、最后一块石头的重量II(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/last-stone-weight-ii/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:这道题,真正困难的不是0-1背包,或者动态规划,而是理解问题。也就是说,怎么把这个题理解成0-1背包的问题呢,这个才是解题的关键,把这个想清楚了,接下来的套路,就直接使用0-1背包的做法就可以了。我是这么想的:石头总重量为s.

2021-09-17 20:23:50 221

原创 动态规划算法练习——8、分割等和子集(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/partition-equal-subset-sum/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:看到这道题,你首先想到的是什么,要是第一次见,我估计首先想到的是:把两个子集找到,然后各自求和比较一下就知道了么。没错,想到这种方法,那首先就是要找子集,然后求和比较,找子集那不就是在找组合么。因此,可以使用回溯法找呀。.

2021-09-16 20:50:15 308

原创 回溯算法练习——6、复原IP地址(C++和Python描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/palindrome-partitioning/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:要是做过分割回文串,那么就很容易做出这道题的。是一个思路。。。其实只要是意识到这是一个切割问题,切个问题就可以使用回溯搜索法把所有的可能性搜索出来。(感觉只要是要枚举出所有的情况,就可以使用回溯搜索法。。。)我们抽.

2021-09-14 21:30:28 198

原创 回溯算法练习——5、分割回文串(C++和Python描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/palindrome-partitioning/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:递归用来纵向遍历,for循环用来横向遍历,切割线(就是图中的红线)切割到字符串的结尾位置,说明找到了一个切割方法。此时可以发现,切割问题的回溯搜索的过程和组合问题的回溯搜索的过程是差不多的。但是,还是和组合不太一.

2021-09-13 21:05:09 422

原创 动态规划算法练习——7、0-1背包问题(python描述)

来源:代码随想录目录1、题目描述:2、思路:3、代码:3.1 python代码:1、题目描述:有N件物品和⼀个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能⽤⼀次,求解将哪些物品装⼊背包⾥物品价值总和最⼤。2、思路:以下面这个为例子举例:按动态规划5步曲介绍:答:其实都可以,这个是怎么得到的呢?其实是按照递推公式得到的。我们只需要保证我们的遍历顺序能保证公式右边的值比左边的dp[i][j]先得到.

2021-09-10 21:52:57 431

原创 回溯算法练习——4、组合总和II(C++和Python描述)

本题的力扣链接:https://leetcode-cn.com/problems/combination-sum-ii/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:1、题目描述:2、思路:其实看完上面的话,还是很迷,因此,这里再解释下:(来源)这个避免重复当思想是在是太重要了。这个方法最重要的作用是,可以让同一层级,不出现相同的元素。即例1: 1 / \ .

2021-09-09 21:59:38 209

原创 动态规划算法练习——6、不同的二叉搜索树(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/unique-binary-search-trees/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:太菜,只能把官方的思路拿过来了。3、代码:3.1 python代码:class Solution: def numTrees(self, n: int) -> int: dp.

2021-09-08 20:55:32 158

原创 动态规划算法练习——5、整数拆分(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/integer-break/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:一看到题,想到的是:将这个整数从1到n-1遍历,计算j*(n-j),然后每次遍历的时候更新最大乘积,但是发现这样只能是拆分成2个数,显然不可以。但是,要是我们能知道拆分开的两个数拆分的最大乘积,那不就得到n的结果了么。因此,由前面的值,推.

2021-09-07 20:40:09 743

原创 回溯算法练习——3、组合总和(C++和Python描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/combination-sum/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:本题和求组合那道题的区别是:本题没有数量要求,可以⽆限重复,但是有总和的限制,所以间接的也是有个数的限制。本题搜索的过程抽象成树形结构如下:这里我需要多说一句:这道题和以前的组合问题有区别,以前的组合问题是不能重复的,而本题相同元素是.

2021-09-06 14:43:01 238

原创 动态规划算法练习——4、不同路径(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/unique-paths/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:机器⼈从(0 , 0) 位置触发,到(m - 1, n - 1)终点。按照动规五部曲来分析:3、代码:3.1 python代码:class Solution: def uniquePaths(self, m:.

2021-09-05 14:01:17 97

原创 回溯算法练习——2、电话号码的字母组合(C++和Python描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:从示例上来看,输⼊"23",最直接的想法就是两层for循环遍历了吧,正好把组合的情况都输出了。如果输⼊"233"呢,那么就三层for循环,如果"2333"呢,就四层for循环…因此,这道题很.

2021-09-05 11:22:53 394

原创 回溯算法练习——1、组合问题(C++和Python描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/combinations/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:回溯三部曲:3、代码:3.1 python代码:class Solution: def combine(self, n: int, k: int) -> List[List[int]]: res =.

2021-09-04 15:48:28 250

原创 动态规划算法练习——3、使用最小花费爬楼梯(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:我们依然按照代码随想录中的五部曲来:3、代码:3.1 python代码:class Solution: def minCostClimbingStairs(self, cost: Li.

2021-09-03 21:46:38 303 1

原创 动态规划算法练习——2、爬楼梯(python和C++描述)

来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/climbing-stairs/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:3、代码:3.1 python代码:class Solution: def climbStairs(self, n: int) -> int: if n <= 2: # 防止下标越界.

2021-08-22 17:26:25 169

原创 动态规划算法练习——1、斐波那契数(python和C++描述)

来源:代码随想录目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:3、代码:3.1 python代码:class Solution: def fib(self, n: int) -> int: if n <= 1: return n dp = [0 for i in range(n+1)] # 定义dp数组,.

2021-08-22 15:48:08 203

原创 记录:OJ(在线测评系统)在线编程常见输入输出(python版本)

来源:牛客网的:OJ在线编程常见输入输出练习场.目录第一题:多行输出a和b,并相加1.1 题目描述:1.2 代码:第二题:输入行数t,接着输入t行数,并相加2.1 题目描述:2.2 代码:第三题:输入多行,0表示结束3.1 题目描述:3.2 代码:第四题:输入多行,每行第一个数表示这行元素的个数,0表示结束4.1 题目描述:4.2 代码:第五题:输入t行,每行第一个数表示这行元素的个数5.1 题目描述:5.2 代码:第六题:输入多行,每行第一个数表示这行元素的个数(没结束条件)6.1 题目描述:6.2.

2021-08-21 10:59:46 930

原创 leetcode笔记总结——(13)递归实现 全排列(python编写)

目录1、题目描述:2、实现思路及代码描述:(1)思路:(2)代码:(3)总结:1、题目描述:2、实现思路及代码描述:(1)思路:(2)代码:nums = [i for i in range(1, 4)] # 要排列的数组[1,2,3]P = [0 for i in range(len(nums))] # P为当前排列hashtable = {x:False for x in nums} # 记录整数x是否已经在P中,初始都为False,表示都不在P中n = len(nums).

2021-08-18 16:33:11 88

原创 leetcode笔记总结——(12)优美全排列(python编写)

目录1、题目描述:2、思路及代码:2.1 方法一:回溯法(超时)(1)思路:(2)代码:1、题目描述:2、思路及代码:2.1 方法一:回溯法(超时)(1)思路:(2)代码:class Solution: def countArrangement(self, n: int) -> int: res = 0 # 保存结果 nums = [i for i in range(1, n+1)] def judge(nums):.

2021-08-18 11:45:33 168

原创 记录 python中 字典 如何排序

目录1、按键排序:2、按值排序:给定一个字典,如:x = {'a':1,'b':4,'c':3}然后分别按键 和 值排序。1、按键排序:# 对字典x排序x = {'a':1,'b':4,'c':3}y = sorted(x.items(), key=lambda x: x[0], reverse=True)print(y)# 输出:[('c', 3), ('b', 4), ('a', 1)]# 这个时候y不是字典,我们再调用dict()函数转换成字典y = dict(.

2021-08-08 10:35:32 86

原创 kaggle比赛:Classify Leaves(使用resnet50预训练模型进行:图片树叶分类)

目录1、比赛介绍:2、数据划分:3、图像增广:4、读取数据:5、模型构造:6、计算损失:7、模型训练:8、模型推理:9、上传预测结果到kaggle:本文内容来源于《动手深度学习》一书。跟着沐神做kaggle比赛。注:以下代码都在jupyter中完成。1、比赛介绍:该任务是:给出树叶的图片,将给出的树叶分成176类。数据如下图所示,通过下面的网址,下载训练数据和测试数据:比赛地址及数据下载地址:https://www.kaggle.com/c/classify-leaves/da.

2021-08-07 16:26:03 3790 6

原创 给你一些图片,如何转换成pytorch的tensor,以便送入模型训练?

目录1、PIL包读取图片地址,并转化为Tensor2、将PIL图片转化为Tensor3、Tensor转化为PIL图片4、直接展示tensor格式图片5、直接保存tensor格式图片6、测试:在做图片分类的kaggle比赛的时候,需要将图片转换为Pytorch的Tensor。为了以后再查看,记录一下Pytorch的Tensor与各种图像格式的相互转化详解。这里,使用python自带图像处理库PIL,给出图片地址,将图片读取出来。然后使用torchvision中自带的transforms函数,将读.

2021-07-31 15:50:42 3956

原创 leetcode笔记总结——(11)两数之和 II - 输入有序数组(python编写)

目录:1、题目描述:2、实现思路及代码:2.1 方法一:二分查找法(1)思路:(2)代码:(3)总结:2.2 方法二:双指针(1)思路:(2)python代码:(3)总结:3、总结:1、题目描述:2、实现思路及代码:最简单的方法就是 暴力法:直接使用两个for循环,来查找两个数之和是否等于目标值,时间复杂度为O(N2)O(N^2)O(N2)。而暴力法没有用到有序数组这个条件,因此我们看看下面的做法:2.1 方法一:二分查找法(1)思路:在数组中找到两个数,使得它们的和等于目标值,可以首先

2021-07-22 19:01:42 179 1

原创 PyTorch学习笔记——(8)模型构造(层和块),以多层感知机为例介绍

目录1、层和块的概念:2、模型构造:2.1 继承Module来构造模型:2.2 Module的子类:(1)Sequential类:2、自定义块:3、顺序块:4、来源:《动手深度学习2》1、层和块的概念:当我们刚开始学习神经⽹络时,我们关注的是具有单⼀输出的线性模型。在这⾥,整个模型只由⼀个神经元组成。注意,单个神经元(1)接受⼀些输⼊;(2)⽣成相应的标量输出;(3)具有⼀组相关参数(parameters),这些参数可以更新以优化某些感兴趣的⽬标函数。然后,当我们开始考虑具有多个输出的⽹络,.

2021-07-16 09:44:01 641 2

django框架学习笔记

django学习

2021-03-16

git实战笔记

git实战笔记

2021-01-25

Ubuntu14.04开发环境搭建文档.pdf

虚拟机安装Ubuntu14.04教程,

2020-07-06

空空如也

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

TA关注的人

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