自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (4)
  • 收藏
  • 关注

原创 剑指offer - 题64~67(滑动窗口最大值,矩阵路径,机器人运动,剪绳子,最大乘积)

滑动窗口的最大值给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,

2020-07-01 23:34:18 215

原创 剑指offer - 题62,63(二叉搜索树,数据流中位数)

二叉搜索树的第k个结点给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回对应节点

2020-06-27 00:24:32 214

原创 剑指offer - 题60,61(二叉树打印,二叉树序列化)

把二叉树打印成多行从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回二维列表[[1,2],[4,5]] def Print(self, pRo

2020-06-26 00:37:30 130

原创 剑指offer - 题58,59(对称二叉树递归,之字形打印二叉树)

对称的二叉树请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSymmetrical(self, p

2020-06-24 23:29:25 90

原创 剑指offer - 题56,57(删除链表重复结点,二叉树下一个结点)

删除链表中重复的结点在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution

2020-06-23 23:14:46 121

原创 剑指offer - 题49~55(字符串数字转换,数组中重复的数字,乘积数组,正则匹配,字符串是否含数值,不重复字符,链表环入口结点)

把字符串转换成整数题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33输出21474836470# -*- coding:utf-8 -*-class Solution: def StrToInt(self, s): # write code

2020-06-22 23:39:39 178

原创 剑指offer - 题46~48(约瑟夫环,递归求和,位运算)

孩子们的游戏(圆圈中最后剩下的数)每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请

2020-06-21 00:08:55 116

原创 剑指offer - 题44,45(翻转单词,扑克牌顺子)

翻转单词顺序列牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?# -*- coding:utf-8 -*-class Solution: def ReverseSentence(se

2020-06-17 23:41:49 92

原创 剑指offer - 题41~43(双指针,左旋转字符串)

和为S的连续正数序列小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序# -*- coding:utf-8 -

2020-06-16 23:50:42 109

原创 剑指offer - 题39,40(平衡二叉树,位运算,异或)

平衡二叉树输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树。平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Nonecl

2020-06-15 23:21:44 144

原创 剑指offer - 题37,38(二分法,二叉树深度,递归思想)

数字在排序数组中出现的次数统计一个数字在排序数组中出现的次数。# -*- coding:utf-8 -*-class Solution: # 二分法找到k值的位置 def BinarySearch(self, data, mlen, k): start = 0 end = mlen - 1 while start <= end: mid = (start + end) / 2 if d

2020-06-14 23:39:14 91

原创 剑指offer - 题35,36(数组逆序对个数,链表公共节点)

数组的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,size<=2*10^5示例1输入1,2,3,4,5,6,7,0输出7...

2020-06-12 23:59:38 106

原创 剑指offer - 题33,34(丑数,质因子,字符计数)

丑数把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。# -*- coding:utf-8 -*-class Solution: def GetUglyNumber_Solution(self, index): # write code here # 丑数可以表示为2^i*3^j*4^k的形式 if not inde

2020-06-11 23:25:57 101

原创 剑指offer - 题30~32(最大子数组和,1的个数,排列数组元素成为最小数)

连续子数组的最大和HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)# -*- coding:utf-8 -*-cl

2020-06-10 23:46:15 88

原创 剑指offer - 题29(partition,最小的第k个数)

最小的k个数输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。# -*- coding:utf-8 -*-import randomclass Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here # python就是方便,此处注意k大于数组长度的情况要返回空数组: return

2020-06-08 00:14:33 98

原创 剑指offer - 题27、28(字符串排列,数组众数)

字符串的排列输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。# -*- coding:utf-8 -*-class Solution: def Permutation(self, ss): # write code here # write code he

2020-06-06 00:27:08 119

原创 剑指offer - 题25、26(链表复制,二叉搜索树与双向链表的转换)

复杂链表的复制输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)'''牛客网@Yannyezixin代码思路:1、在每个节点后面复制当前节点;2、将原节点的链接关系复制到复制节点上;3、将此链表按奇偶位置拆分成两个链表。'''# -*- coding:utf-8 -*-# class RandomListNo

2020-06-03 23:38:04 94

原创 剑指offer - 题23~24(二叉树,后序遍历,深度优先搜索(DFS),二叉搜索树)

二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): # write code here ''' 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者

2020-06-02 23:49:27 88

原创 剑指offer - 题20~22(栈、队列、二叉树)

包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack = [] self.assist = [] def push(self, node): # w

2020-06-01 23:41:30 79

原创 剑指offer - 题16~19(合并链表,递归,二叉树子树、镜像,矩阵顺时针打印)

合并两个排序的链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回合并后列表 def Merge(self, pHead1, pHead2): # write

2020-05-31 23:40:24 107

原创 剑指offer - 题15(反转链表)

反转链表输入一个链表,反转链表后,输出新链表的表头。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): # write code here if not

2020-05-30 00:03:23 97

原创 剑指offer - 题12~14(快速幂算法、二进制位运算、数组排序,链表双指针)

数值的整数次方给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # write code here # 常规思路,关键在于条件判断 if base ==0: return 0

2020-05-28 23:39:02 92

原创 剑指offer - 题5~11(栈&队列、旋转数组、斐波那契数列、跳台阶、矩形覆盖方法、二进制补码)

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。# -*- coding:utf-8 -*-class Solution: def __init__(self): # 栈A存储新来的元素,栈B用作出队列操作,不为空时直接pop,为空时要将栈A中所有元素push到栈B中进行pop操作 self.stackA=[] self.stackB=[] def push(self, node): #

2020-05-25 23:47:13 183 1

原创 剑指offer - 题3、4(链表递归、二叉树三种遍历递归)

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode):

2020-05-24 23:49:21 138 1

原创 剑指offer - 题1、2(数值有序查找、字符替换)

01 题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here # 关键思路在于从左下角开始查找,这样保证指针路线是

2020-05-24 00:00:28 128 1

原创 LeetCode - 560. 和为K的子数组(python)

560. 和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。解题:# 一开始采用暴力解法,超出了时间限制class Solution: def subarraySum(sel

2020-05-15 22:40:07 554

原创 LeetCode - 136. 只出现一次的数字(python)

136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题:class Solution: def singleNumber(self, nums: List[int]) -> int: result=nums[0]

2020-05-14 21:16:12 110

原创 LeetCode - 102. 二叉树的层序遍历(python)

102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题:# Definition for a binary tree node.# class TreeNode:# def __init__(

2020-05-13 21:53:58 284

原创 LeetCode - 155. 最小栈(python)

155. 最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null

2020-05-12 22:23:56 227

原创 LeetCode - 236. 二叉树的最近公共祖先(python,动态规划)

236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:

2020-05-10 22:33:16 221

原创 LeetCode - 98. 验证二叉搜索树(python,动态规划)

98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ ...

2020-05-05 23:40:23 103

原创 LeetCode - 45. 跳跃游戏 II(python,动态规划)

45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组...

2020-05-04 22:42:47 519

原创 LeetCode - 53. 最大子序和(python,动态规划,分治算法)

53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题:class Solution(object):...

2020-05-03 22:32:47 196

原创 LeetCode - 21. 合并两个有序链表(python)

21. 合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题:# Definition for singly-linked list.# class ListNode:# def ...

2020-05-01 23:07:09 172

原创 LeetCode - 202. 快乐数(python)

202. 快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 82...

2020-04-30 22:40:49 349

原创 LeetCode - 面试题56 - I. 数组中数字出现的次数(python)

面试题56 - I. 数组中数字出现的次数一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 ...

2020-04-28 23:53:09 179

原创 LeetCode - 面试题51. 数组中的逆序对(python)- 动态规划

面试题51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000解题:# 除了暴力解法之外:class Solution: def reversePairs(self, nums: Li...

2020-04-24 23:49:12 414

原创 LeetCode - 面试题 08.11. 硬币(python)- 动态规划

面试题 08.11. 硬币硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1...

2020-04-23 23:37:01 302

原创 LeetCode - 199. 二叉树的右视图(python)

二叉树的右视图给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---解题:#...

2020-04-22 23:20:38 183

原创 LeetCode - 1248.统计优美子数组-统计含k个奇数的子数组个数(python)

统计「优美子数组」给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4...

2020-04-21 23:31:17 634

Boyd凸优化资料(含中英文课本教材、习题、PPT、Matlab习题)

Boyd凸优化资料(内含中英文课本教材、习题、PPT、Matlab习题)建议大家配合官网上的视频食用,效果更佳哟~

2018-12-05

工程数学线性代数第六版(同济大学)

考研同学必备线性代数备考教材。同时,线性代数和概率论是机器学习算法的数学基础。

2018-12-04

信息论基础(Thomas M.Cover)第2版参考答案

信息论要求有较为扎实的概率论基础。此答案为英文版,中间缺失的几页均是空白页,所以大家不用担心,总体是完整的,整理不易,请大家选择下载

2018-11-12

空空如也

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

TA关注的人

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