![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python3
Seanlocked
Call on duty.
展开
-
leetcode NO.148 排序链表 白痴讲解 腾讯精选练习50
以前好像做合并有序链表那个题,所以有一个万能的写法,但是题目要求常数级空间所以这个方法不行,但是还是贴出来。就是用一个list先存起来,然后再排序再放进去,速度很快,但是不是常数级空间,是O(n)# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# ...原创 2019-06-29 01:36:16 · 175 阅读 · 0 评论 -
leetcode NO.78 子集 白痴讲解 腾讯精选练习50
回溯法class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: result = [] def dfs(lst,nums,pos):#pos用于记录轮到那一位的下一位的下标 result.append(lst[:])#这一步不知道为什么一定要...原创 2019-06-09 21:31:23 · 163 阅读 · 0 评论 -
leetcode NO.141 环形链表 白痴讲解 腾讯精选练习50
直接法:原本想法是用list存里面的链表的表头的数字的,结果发现如果给的链表如果数字有相同的话就会不行,于是还是要存链表才行,这样比较费空间# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# se...原创 2019-06-14 17:29:22 · 109 阅读 · 0 评论 -
leetcode NO.136 只出现一次的数字 白痴讲解 腾讯精选练习50
本次讲解方法来自leetcode官方解答https://leetcode-cn.com/problems/single-number/solution/zhi-chu-xian-yi-ci-de-shu-zi-by-leetcode/我们的最终目的使用线性复杂度,不是用额外空间做出来方法一:遍历全部情况遍历 nums中的每一个元素如果某个nums中的数字是新出现的,则将它添加到no_d...原创 2019-06-14 15:07:18 · 116 阅读 · 0 评论 -
leetcode NO.54. 螺旋矩阵 白痴讲解 腾讯精选练习50
class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if matrix == []: return matrix #空矩阵返回空矩阵 T = 0 D = len(matrix) - 1 ...原创 2019-06-03 11:02:54 · 145 阅读 · 0 评论 -
leetcode NO.88 合并两个有序数组 白痴讲解 腾讯精选练习50
class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ whil...原创 2019-06-03 00:40:33 · 171 阅读 · 0 评论 -
leetcode NO.344 反转字符串 白痴讲解 腾讯精选练习50
双指针class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ i, j = 0, len(s) - 1 while...原创 2019-06-08 01:06:36 · 108 阅读 · 0 评论 -
leetcode NO.62 不同路径 白痴讲解 腾讯精选练习50
动态规划DP考虑位置(i,j)。到达该位置一共有2条线路,从上面的格子(i-1,j)过来或从左边的格子(i,j-1)过来,不可能从下面的格子和右边的格子过来。所以递推公式path(i,j)=path(i-1,j)+path(i,j-1),边界条件是,(0,j)j=0,…,n-1的和(i,0)i=0,…,m-1的只有一种方式到这些点,所以dp[i][0]=1,dp[0][j]=1,然后就能推出所...原创 2019-06-08 01:00:23 · 116 阅读 · 0 评论 -
leetcode NO.43 字符串相乘 白痴讲解 腾讯精选练习50
题目描述第一反应怎么这么简单,这怎么会是中等难度的题目。结果没注意到不能直接将输入转换为整数处理,还是放上自己写的没审题代码。def multiply1(self, num1, num2): return str(int(num1)*int(num2))emm,真实。我貌似没有找到不用int的方法,不过主流答案就是使用乘法原理,就是各个位上的数对应相乘。class Solut...原创 2019-05-29 11:51:03 · 127 阅读 · 0 评论 -
leetcode NO.70 爬楼梯 白痴讲解 腾讯精选练习50
题目描述偷懒了,明天去澳门耍,所以先把简单题做了。一开始肯定是想着用递归class Solution: def climbStairs(self, n: int) -> int: if n==1: return 1 elif n==2: return 2 else: ...原创 2019-06-01 00:51:09 · 97 阅读 · 0 评论 -
leetcode NO.53 最大子序和 白痴讲解 腾讯精选练习50
题目描述自己写的代码class Solution: def maxSubArray(self, nums: List[int]) -> int: nsum = 0 psum = 0 count = 0 value = [] for i in range(len(nums)): ...原创 2019-05-31 23:21:29 · 100 阅读 · 0 评论 -
leetcode NO.104 二叉树的最大深度 白痴讲解 腾讯精选练习50
第一想法是递归,因为他们能分成相同的二叉结构先给出n = 0的情况if root == None: return 0其实我这里还多写了n = 1的情况,其实可以不写,只是当时没想到不写其实也行elif root.left == None and root.right == None: return 1然后写如何从n = k推到 n = k+1else: return ...原创 2019-06-09 22:44:24 · 147 阅读 · 0 评论 -
leetcode NO.121 买卖股票的最佳时机 白痴讲解 腾讯精选练习50
DPclass Solution: def maxProfit(self, prices: List[int]) -> int: if len(prices) <= 1: return 0 else: rmax = 0 pmin = prices[0] ...原创 2019-06-10 01:04:26 · 105 阅读 · 0 评论 -
leetcode NO.146 LRU缓存机制 白痴讲解 腾讯精选练习50
这道题实在是没看懂参考了B站这个大神,大概看懂了https://www.bilibili.com/video/av49870345?from=search&seid=13851888023627148872主要是要定义一个双向的链表和一个字典来处理。双向链表可以可访问它的上一个元素和下一个元素。字典可以储存(每个双向链表的key,和它们对应的双向链表)同时还需要两个额外的函数...原创 2019-06-22 17:35:49 · 134 阅读 · 0 评论 -
leetcode NO.124 二叉树中的最大路径和 白痴讲解 腾讯精选练习50
这是官方解答的代码https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/solution/er-cha-shu-de-zui-da-lu-jing-he-by-leetcode/# Definition for a binary tree node.# class TreeNode:# def __init__...原创 2019-06-12 01:17:32 · 120 阅读 · 0 评论 -
leetcode NO.84 格雷编码 白痴讲解 腾讯精选练习50
举报了,本来写的好好的,突然没了,什么辣鸡编译器。今天这个题目不太好懂,看了好几个blog我才看懂是什么,我先来解释一下关键在于多读几遍这个句,格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。首先题目给的n是指二进制数的位数比如说n = 0 对应 Nonen = 1 对应 0 1n = 2 对应 00 01 11 10n = 3 对应 000 001 ...原创 2019-06-11 00:56:36 · 127 阅读 · 0 评论 -
leetcode 最接近的三数之和 白痴讲解
题目描述最接近的三数之和方法一:看到这个就想到昨天的三数之和不过目的变成到target的距离最小,上一题的target=0还是借用老表的图解https://blog.csdn.net/qq_39241986/article/details/83154759class Solution(object): def threeSumClosest(self, nums, targ...原创 2019-02-02 17:23:38 · 106 阅读 · 0 评论 -
leetcode 三数之和 白痴讲解
题目描述三数之和方法一:因为是三数之和,所以最直观的想法就是,用三个循环把,所有可能的三数之和算一遍就可以了。第一个循环定住第一个数,然后从第二个数从左右到搜索,从最后一个数从右到左搜索。这里借鉴老表的分析图,非常直观。https://blog.csdn.net/qq_39241986/article/details/83062873代码稍微优化了一下,特殊情况class ...原创 2019-02-01 20:52:11 · 203 阅读 · 0 评论 -
leetcode 最长公共前缀 白痴讲解
题目描述方法一:我的想法和官方解答的方法一比较像。思路就是我觉得这个公式讲的很好,很精髓。这个图也很到位~加上我详细的代码解释简直完美class Solution: def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str ...原创 2019-01-31 22:30:32 · 301 阅读 · 0 评论 -
leetcode 字符串转换整数 白痴讲解
题目描述方法一我的首先想法是正则表达式,原因是这是一个从字符串中寻找符合某种要求的字符串。class Solution(object): def myAtoi(self, s): """ :type str: str :rtype: int """ #引入正则化模块 import r...原创 2019-01-30 16:13:07 · 225 阅读 · 0 评论 -
leetcode NO.61 旋转链表 白痴讲解 腾讯精选练习50
我的方法其实比较蠢,我首先用一个while循环来读取head这个链表的正序的所有值用一个数组s储存起来,因为数组比较好操作,并且用count记录表链的长度。由于题目是给的向后推k个数字,并把这个k个数字挪到前面来,设数组长度为n实际上就等价于把前n-k个数字挪到最后面去。最后一步是将调整后数组里的数导入到一个新的链表中去。# Definition for singly-linked lis...原创 2019-06-04 16:28:25 · 100 阅读 · 0 评论 -
leetcode NO.142 环形链表 II 白痴讲解 腾讯精选练习50
官方答案写的很好,建议大家参考原创 2019-06-16 01:27:20 · 163 阅读 · 0 评论 -
leetcode NO.59 螺旋矩阵 II 白痴讲解 腾讯精选练习50
和螺旋矩阵Ⅰ类似把取出的操作换成写入就可以了具体的分析可以看上一题class Solution: def generateMatrix(self, n: int) -> List[List[int]]: result = [[0 for i in range(n)] for j in range(n)] T = 0 D = n ...原创 2019-06-04 00:20:42 · 127 阅读 · 0 评论 -
leetcode NO.46 全排列 白痴讲解 腾讯精选练习50
题目描述主要是要用到递归的思想snew的作用是抽出一个元素,然后递归剩下的去找它的全排列一开始觉得代码很难理解,可以用数学归纳法来理解递归,首先我们虽然没有完成这个函数,但是我们先认为我们这个函数可以完成输入数组的全排列,然后我们不断抽出一个元素然后再求snew的全排列,按照原理,直到len(nums)==0的情况,对应数学归纳法k=0时的情况的解我们自己给出,然后完成k=n-1推到k=n...原创 2019-05-30 20:44:15 · 186 阅读 · 0 评论 -
leetcode NO.23 合并K个排序链表 白痴讲解 腾讯精选练习50
题目描述今天做了一道hard的题目,感觉是之前的合并两个有序链表的升级版,提交了一次超时了,后来请教了梁老师改了一次节省了一些读取时间终于过了,同时也了解堆的用法,分治的算法虽然感觉没有完全弄懂,但是还是可以说明一下。先放上最开始的版本:# Definition for singly-linked list.# ListNode:# def __init__(self, x):...原创 2019-05-18 15:44:44 · 175 阅读 · 0 评论 -
leetcode NO.33 搜索旋转排序数组 白痴讲解 腾讯精选练习50
题目描述这题我自己没想出来下面贴上一个我觉得比较好理解的答案https://leetcode-cn.com/problems/search-in-rotated-sorted-array/solution/sou-suo-xuan-zhuan-pai-xu-shu-zu-by-powcai/首先我们要读懂题目,虽然我读了很久才读懂是什么意思,这道题就是说有一个升序的数组1234567,现...原创 2019-05-27 14:02:09 · 178 阅读 · 0 评论 -
PyTorch实现Logistic regression
PyTorch基础实现代码import numpy as npimport torchfrom torch.autograd import Variabletorch.manual_seed(2)x_data=Variable(torch.Tensor([[1.0],[2.0],[3.0],[4.0]]))y_data=Variable(torch.Tensor([[0.0],[0.0...原创 2019-04-12 12:36:59 · 1197 阅读 · 0 评论 -
PyTorch设立计算图并自动计算(梯度下降和线性回归的实现)
numpy和pytorch实现梯度下降法设定初始值求取梯度在梯度方向上进行参数的更新使用Python实现x = 1learning_rate = 0.1epochs = 100y = lambda x : x ** 2 + 2 * x + 1for epoch in range(epochs): dx = 2 * x + 2 x = x - learning...原创 2019-04-12 11:57:01 · 694 阅读 · 0 评论 -
leetcode NO_441. 排列硬币 白痴讲解
我的方法是用暴力法做的。class Solution: def arrangeCoins(self, n: int) -> int: if n==0: return 0; if n>=1: sum = 0; flag = 0; while sum ...原创 2019-04-02 21:55:42 · 125 阅读 · 0 评论 -
leetcode NO_122. 买卖股票的最佳时机 II 白痴讲解
class Solution: def maxProfit(self, prices: List[int]) -> int: i=0; j=1; money=0; while j<len(prices): t=prices[j]-prices[i]; if t>...原创 2019-04-06 11:26:57 · 138 阅读 · 0 评论 -
PyTorch的基本概念
什么是Pytorch,为什么选择Pytroch?PyTorch是一个基于python的科学计算包,主要针对两类人群:作为NumPy的替代品,可以利用GPU的性能进行计算作为一个高灵活性、速度快的深度学习平台Pytorch相比Tensorflow而言,它的设计初衷是简单易用用,所以它是基于动态图进行实现的,从而方便调试。当然,Tensorflow在1.5版的时候就引入了Eager Exec...原创 2019-04-06 10:52:27 · 377 阅读 · 0 评论 -
leetcode NO_452.用最少数量的箭引爆气球 白痴讲解
今天这题是medium难度的,读题就花了一点时间,简化之后就是按照我们数学人的思维就是,求出kkk个区间的交集有多少个互不相交的区间。emmmm好像有点拗口。至此我参考了B站花花酱的视频截图。这样大家对题目有比较直观的了解。算法思想是,先根据区间上界做排序,我们把这个区间叫第一小区间,然后和下一个区间的区间下界做比较,我们把这个叫第二小区间,如果第一小区间的上界依然大于第二小区间的下界,那...原创 2019-04-05 18:44:41 · 169 阅读 · 0 评论 -
leetcode NO.69_x 的平方根 白痴讲解
一个数 x 的开方 sqrt 一定在 0 ~ x 之间,并且满足 sqrt == x / sqrt 。可以利用二分查找在 0 ~ x 之间查找 sqrt。class Solution: def mySqrt(self, x: int) -> int: if x <= 1: return x; l = 1; ...原创 2019-03-31 18:51:38 · 143 阅读 · 0 评论 -
leetcode NO_455.分发饼干 白痴讲解
class Solution: def findContentChildren(self, g: List[int], s: List[int]) -> int: g.sort(); s.sort(); child = 0; cookies = 0; while (child<len(g) and...原创 2019-04-04 16:46:10 · 197 阅读 · 0 评论 -
leetcode NO_540.有序数组中的单一元素 白痴讲解
class Solution: def singleNonDuplicate(self, nums: List[int]) -> int: left, right = 0, len(nums)-1 while left < right: mid = (left+right)//2 if mid %...原创 2019-04-03 22:01:42 · 220 阅读 · 0 评论 -
leetcode 寻找两个有序数组的中位数 白痴讲解
4. 寻找两个有序数组的中位数题目描述:方法一将两个数组拼接,然后排序,根据中位数的定义来求中位数。class Solution: def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] ...原创 2019-01-28 15:55:39 · 551 阅读 · 0 评论 -
用PyTorch实现多层网络
用PyTorch实现多层网络步骤如下:引入模块,读取数据构建计算图(构建网络模型)损失函数与优化器开始训练模型对训练的模型预测结果进行评估import torch.nn.functional as Fimport torch.nn.init as initimport torchfrom torch.autograd import Variableimport matpl...原创 2019-04-13 17:38:19 · 1904 阅读 · 0 评论 -
PyTorch理解更多神经网络优化方法
了解不同优化器SGD随机梯度下降法是梯度下降法的一个小变形,就是每次使用一批(batch) 数掘进行梯度的计算,而不是计算全部数据的梯度.因为现在深度学习的数据量都特别大, 所以每次都计算所有数据的梯度是不现实的,这样会导致运算时间特别长,同时每次都计算全部的梯度还失去了一些随机性, 容易陷入局部误差,所以使用随机梯度下降法可能每次都不是朝着真正最小的方向.但是这样反而容易跳出局部极小点。...原创 2019-04-16 19:32:03 · 549 阅读 · 0 评论 -
leetcode NO.11 盛最多水的容器 白痴讲解 腾讯精选练习50
题目描述第一想法就是时间复杂度为O(n2n^2n2)的暴力破解,虽然我自己写也写的很磕绊就是了,辣鸡就是我!class Solution: def maxArea(self, height: List[int]) -> int: maxarea = 0 x1 = 0 x2 = 0 for i in height[0...原创 2019-05-13 14:03:56 · 157 阅读 · 0 评论 -
leetcode NO.9 回文数 白痴讲解 腾讯精选练习50
题目描述比较简单,写了个一重循环就可以解决了class Solution: def isPalindrome(self, x: int) -> bool: x = list(str(x)) y = 2 for i in range(len(x)//2): if x[i] != x[len(x)-1-i]: ...原创 2019-05-13 00:57:33 · 172 阅读 · 0 评论