自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【leetcode】002.两数相加

【leetcode】002.两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头来源:力扣(LeetCode)链接:https://leetcode.cn/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。比较容易漏掉的是最后的一次进位操作解法二 代码优

2022-06-06 20:55:58 100

原创 【剑指offer】036.二叉搜索树与双向链表

题目【剑指offer】036.二叉搜索树与双向链表解法二叉搜索树相关的题目,首先联想到中序遍历,因为中序遍历的结果刚好是有序的,大部分题目是在中序遍历的基础上稍微调整。这里用self.head和self.tail来记录。self.head在递归的时候只要赋值一次就可以了。self.tail会不停地变,当把root的左子树遍历完后,当前self.tail是指向左子树里面的最后一个节点。此时要把这个节点和root连接,并且把self.tail指向root。注意,此时不需要将self.tail和sel

2022-04-22 16:10:12 396

原创 【剑指offer】034.二叉树中和为某一值的路径

题目【剑指offer】034.二叉树中和为某一值的路径解法DFS。但是这里要注意python的一些特性。python传参传对象,可变对象可变,不可变对象不可变class Solution: def pathSum(self, root: TreeNode, target: int) -> List[List[int]]: res, cur = [], [] def dfs(root, tar): if not root: ret

2022-04-19 00:23:20 670

原创 【剑指offer】021.调整数组顺序使奇数位于偶数前面

题目【剑指offer】021.调整数组顺序使奇数位于偶数前面解法双指针class Solution: def exchange(self, nums: List[int]) -> List[int]: if len(nums)<=1: return nums l, r = 0, len(nums)-1 while l<r: if nums[l]%2==0 and nums[r]%2==1:

2022-04-18 00:05:21 278

原创 【剑指offer】022.链表中倒数第k个节点

题目【剑指offer】022.链表中倒数第k个节点解法双指针class Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: p = head for i in range(k): p = p.next q = head while p: p = p.next q

2022-04-17 23:57:43 541

原创 【剑指offer】024.反转链表

题目【剑指offer】024.反转链表解法递归class Solution: def reverseList(self, head: ListNode) -> ListNode: if not head or not head.next: return head new_head = self.reverseList(head.next) head.next.next = head head.nex

2022-04-17 23:53:24 348

原创 【剑指offer】033.二叉搜索树的后序遍历序列

题目【剑指offer】033.二叉搜索树的后序遍历序列解法递归class Solution: def verifyPostorder(self, postorder: List[int]) -> bool: if len(postorder)<=1: return True root = postorder[-1] idx = -1 for i in range(len(postorder)-

2022-04-17 23:24:12 225

原创 【剑指offer】032.1/2/3从上往下打印二叉树

题目【剑指offer】032.1从上往下打印二叉树解法二叉树的层序遍历# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def levelOrder(self, root: TreeNod

2022-04-17 17:02:35 159

原创 【剑指offer】031.栈的压入、弹出序列

题目【剑指offer】031.栈的压入、弹出序列解法模拟class Solution: def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool: if len(popped)==0: return True stack = [] p = 0 for i in range(len(pushed)): stack.

2022-04-17 17:00:45 55

原创 【剑指offer】030.包含min函数的栈

题目【剑指offer】030.包含min函数的栈解法这道题有一定的技巧性,自己根本想不到还能利用一个辅助栈。class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack = [] self.min_stack = [] def push(self, x: int) -> No

2022-04-17 16:05:28 52

原创 【剑指offer】028.对称的二叉树

题目【剑指offer】028.对称的二叉树解法解法1 层序遍历修改自己一开始只想到这种做法,层序遍历的过程中判断当前层的结果是否是回文。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:

2022-04-17 12:38:43 46

原创 【剑指offer】027.二叉树的镜像

题目【剑指offer】027.二叉树的镜像解法递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def mirrorTree(self, root: TreeNode) -> T

2022-04-16 21:46:24 194

原创 【剑指offer】026.树的子结构

题目【剑指offer】026.树的子结构判断树B是否为A的子结构解法递归的思路,应该先想到拆分子问题。借助先序遍历的流程,如果A当前节点值和B当前节点值相等,那么则可以调用isContain()判断以这两个节点为根节点的两个子树是否存在子结构关系。。如果不存在,则看A的左子树和B关系,否则看右子树和B关系。class Solution: def isContain(self, A, B): if B is None: return True

2022-04-16 21:17:22 206

原创 【剑指offer】25.合并两个排序的链表

题目【leetcode】25.合并两个排序的链表解法双指针两个指针分别指向两个链表,每次比较所指结点的数值,取较小的结点放到新链表中。注意一般会设个虚拟头结点,避免一些空链表问题。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def me

2022-04-16 12:10:53 199

原创 【leetcode】141.环形链表

题目【leetcode】141.环形链表判断链表是否有环解法快慢指针# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = None# 判断链表是否含环class Solution: def hasCycle(self, head: Optional[ListNode]) -> b

2022-03-01 08:02:42 187

原创 【leetcode】876.链表的中间结点

题目【leetcode】876.链表的中间结点解法快慢指针# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def middleNode(self, head: ListNode) -> ListNode:

2022-02-27 21:51:39 248

原创 【leetcode】019.删除链表的倒数第n个结点

题目【leetcode】019.删除链表的倒数第n个结点解法快慢指针链表类题目的一个小tips是新建一个dummy节点# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def removeNthFromEnd(

2022-02-27 21:07:06 250

原创 【leetcode】206.反转链表1

题目【leetcode】206.反转链表1给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。解法三个指针class Solution: def reverseList(self, head: ListNode) -> ListNode: if not head or not head.next: return head p = None q = head t = q.next

2022-02-22 22:37:20 218

原创 【leetcode】023.合并K个有序链表

题目【leetcode】023.合并K个有序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5-&g

2022-02-22 16:07:47 73

原创 【leetcode】021.合并两个有序链表

https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/# 递归class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: if list1 is None: return list2

2022-02-17 21:46:14 214

原创 【剑指offer】014.剪绳子 1

题目【剑指offer】014.剪绳子 1给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 = 3

2022-02-15 14:30:31 313

原创 【剑指offer】013.机器人的运动范围

题目地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m =

2022-02-10 16:35:44 63

原创 【剑指offer】012.矩阵中的路径

题目【剑指offer】012.矩阵中的路径给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"],["S",

2022-01-20 15:52:02 64

原创 【剑指offer】011. 旋转数组的最小数字

题目【剑指offer】011. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0解法解法1暴力遍历一遍,时间O(n)解法

2021-12-30 20:51:07 51

原创 【剑指offer】010. 斐波那契数列①

题目【剑指offer】010. 斐波那契数列①写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。解法解法1递归递归会有很多重复

2021-12-29 22:20:29 387

原创 【剑指offer】009. 用两个栈实现队列

题目剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","de

2021-12-27 20:17:28 58

原创 【剑指offer】007. 重建二叉树

题目【剑指offer】007. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]限制:0 <= 节点

2021-12-27 19:21:39 194

原创 【剑指offer】006. 从尾到头打印链表

题目【剑指offer】006. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000解法3种class Solution: def reversePrint(self, head: ListNode) -> List[int]: p = head res = [] while p:

2021-12-27 17:18:32 55

原创 【剑指offer】005.替换空格

题目【剑指offer】005.替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000解法解法1掉包class Solution: def replaceSpace(self, s: str) -> str: return s.replace(' ', '%20')解法2直接遍历,时间O

2021-12-26 22:15:08 105

原创 【剑指offer】004.二维数组中的查找

题目【剑指offer】004.二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26,

2021-12-26 20:03:37 260

原创 【剑指offer】003.数组中的重复数字

题目【剑指offer】003.数组中的重复数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000解法解法1时间O(n),空间O(n)class Solution: def findRepea

2021-12-26 17:18:13 3141

原创 【数据结构】python 排序算法

python实现一些排序算法class Solution(object): def InsertSort(self, nums): for i in range(1, len(nums)): for j in range(i): if nums[j]>nums[i]: nums[j], nums[i] = nums[i], nums[j] return nums def ChooseSort(self, nums):

2021-12-23 22:03:00 476

原创 SVM中核函数的理解

SVM中核函数的理解本文主要是对SVM核函数进行理解,并证明高斯核函数能将特征映射到无穷维。0 回顾SVM对偶形式如下:min⁡α12∑i=1N∑j=1Nαiαjyiyj(xi,xj)−∑i=1Nαi\min \limits_{\alpha} \frac{1}{2} \sum\limits_{i=1}^N \sum\limits_{j=1}^N \alpha_i \alpha_j y_i ...

2019-08-04 18:40:17 372

原创 python中变量命名的含义

文章目录**python中变量命名的含义**普通变量(var)单前导下划线(_var)双前导下划线(__var)前后双下划线(__var\_\_)代码实战参考python中变量命名的含义在python代码中,变量命名有很多种。比如var、_var、__var、__var__等,一直很对这些似懂非懂。本文就对Python中变量/函数命名规范总结。因为函数名和变量都有这些不同命名的格式,所以我们...

2019-07-30 00:36:39 1176

原创 拼多多2020届提前批算法岗第一次笔试

拼多多2020届提前批研发岗笔试题目写的是大致意思。代码是在笔试后,自己完善的,仅供参考。不确定是否AC100%。编程题1 升序数组题目描述给你两个数组,数组1是近似升序的,也就是说可以通过修改其中某个数,使得数组1是严格的升序数组。现在问,是否可以从数组2中选一个数来对数组1中的某个数进行替换,使得数组1严格升序。如果可以,找出数组2中满足要求的最大的数对数组1进行修改,并打印出数...

2019-07-28 20:12:42 481

原创 LSTM缓解梯度消失的原因

LSTM缓解梯度消失的原因本文主要是对LSTM缓解梯度消失的原因,从公式上进行推导理解。对于LSTM的结构如下:ct=ct−1⊗σ(Wf⋅[Ht−1,Xt])⊕tanh⁡(Wc⋅[Ht−1,Xt])⊗σ(Wi⋅[Ht−1,Xt])c_{t}=c_{t-1} \otimes \sigma\left(W_{f} \cdot\left[H_{t-1}, X_{t}\right]\right) \...

2019-07-27 16:35:54 1045

原创 RNN中的梯度消失/爆炸原因

RNN中的梯度消失/爆炸原因梯度消失/梯度爆炸是深度学习中老生常谈的话题,这篇博客主要是对RNN中的梯度消失/梯度爆炸原因进行公式层面上的直观理解。首先,上图是RNN的网络结构图,(x1,x2,x3,…,)(x_1, x_2, x_3, …, )(x1​,x2​,x3​,…,)是输入的序列,XtX_tXt​表示时间步为ttt时的输入向量。假设我们总共有kkk个时间步,用第kkk个时间步的输出...

2019-07-27 16:33:38 472

原创 DNN中的梯度消失/爆炸原因

DNN中的梯度消失/爆炸原因梯度消失/梯度爆炸是深度学习中老生常谈的话题,这篇博客主要是对DNN中的梯度消失/梯度爆炸原因进行公式层面上的直观理解。如上图所示,假设有2个隐层,前向传播公式:f1=σ(w1x+b1),z1=w1x+b1f_1 = \sigma(w_1x+b_1),z_1 = w_1x+b_1f1​=σ(w1​x+b1​),z1​=w1​x+b1​f2=σ(w2f1+b2)...

2019-07-27 16:32:34 686

原创 最大似然估计和EM算法

文章目录最大似然估计前言定义例子1例子2 正态分布总结EM算法本文是对最大似然估计和EM算法做的一个总结。一般来说,事件A发生的概率与某个未知参数θ\thetaθ有关,θ\thetaθ取值不同,则事件A发生的概率p(A∣θ)p(A|\theta)p(A∣θ)也不同。当我们在一次实验中事件A发生了,则认为此时的θ\thetaθ值应是t的一切可能取值中使p(A∣θ)p(A|\theta)p(A∣θ...

2019-07-27 16:31:24 626

原创 【leetcode】 旋转数组中的查找系列

旋转数组中的查找系列文章目录旋转数组中的查找系列1. 旋转数组中的查找12. 旋转数组中的查找23. 旋转数组中的最小值14. 旋转数组中的最小值2这类题型主要是二分法的变形题,一般都是在二分法的代码上进行改进,可以分析 left mid right 这三个位置的相对大小情况来确定二分后两个区间内数据大小的分布情况来缩小范围进行二分。我一般是先分析mid 和 right 的相对大小情况,如果...

2019-07-27 16:29:16 146

空空如也

空空如也

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

TA关注的人

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