自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冷咖啡离开了杯垫,来到了博客

博采众长,搏出未来。

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

原创 股票买入卖出问题 leetcode123(最多k次交易)

leetcode123 问题链接https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/给定一些天数的股票价格list, 最多k次买入卖出, 求能获得的最大利润。 (买入前必须先卖出已有的股票)解决思路:动态规划令dp[i][j]表示最多i次交易(买入卖出算一次交易),前j天所能获得的最大利润。dp[i...

2019-07-05 16:03:44 2153

原创 蛇形矩阵

def generate(n): count = 0 mark = -1 res = [[0]*n for i in range(n)] #res[0][0] = 1 for i in range(0, n): if mark == 1: #从上往下 x = 0 for y in range(...

2019-06-30 21:51:26 195

原创 背包问题(0-1背包问题和完全背包问题)

一. 0-1背包问题给了一些物品的重量和价值,背包只能装下一定重量的物品,求背包能装物品的最大价值(0-1背包问题约定每个物品最多只能用一次)。w = [5, 4, 7 ,2 ,6] #重量p = [12,3,10, 3, 6] #价值v = 12 #包能装下的总重量n = 5 #物品个数1)不超过总重量(不要求装满)的情况下,价值最大w = [5, 4, 7 ,2 ,6...

2019-06-19 16:49:13 1228

原创 复杂链表的复制

# -*- coding:utf-8 -*-# class RandomListNode:# def __init__(self, x):# self.label = x# self.next = None# self.random = Noneclass Solution: # 返回 RandomListNode ...

2019-05-20 23:29:35 134

原创 归并排序的递归与非递归方式(python)

# -----------递归---------------def merge_sort(nums): if len(nums) <= 1: return nums mid = len(nums)//2 left = merge_sort(nums[:mid]) right = merge_sort(nums[mid:]) retu...

2019-03-14 13:09:22 1120 3

原创 二叉树的四种遍历(非递归)

class treeNode: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def first_order(root): if not root: ...

2019-03-14 10:45:27 165

原创 最长递增子序列

题目描述:Given an unsorted array of integers, find the length of longest increasing subsequence.For example,Given [10, 9, 2, 5, 3, 7, 101, 18],The longest increasing subsequence is [2, 3, 7, 101],...

2019-02-26 15:38:54 121

原创 循环有序数组中查找某个数

循环有序数组中查找某个数利用二分查找,一个循环有序数组从中间切分,一定分成一个有序数组和一个循环有序数组,由于循环有序数组不容易判断,我们只需判断哪一边是有序数组以及target是不是在有序数组这一边。# 循环有序数组查找某个数def find(ls, target): if not ls or not target: return -1 low =...

2019-02-23 15:15:22 987

原创 最小的k个数(第k小的数)

1. 利用快排的思想,由于每次只选择左右部分中的一部分,因此时间复杂度为O(n).# -*- coding:utf-8 -*-class Solution: # (O(n)复杂度) def GetLeastNumbers_Solution(self, tinput, k): # write code here length = len(tin...

2019-02-22 13:49:36 3041

原创 丑数

# -*- coding:utf-8 -*-class Solution: def GetUglyNumber_Solution(self, index): # write code here if index &lt; 1: return 0 ugly = [1] #第一个丑数 m2 = 0 # ...

2019-02-21 23:36:29 145

原创 反转链表的循环和递归方式(python)

# 循环class Solution: # 返回ListNode def ReverseList(self, pHead): # write code here left = None cur = pHead while cur: right = cur.next #保存 ...

2019-02-20 10:43:46 315

原创 数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。思路分析为了让时间复杂度较低,考虑用二分查找。分别用两次二分查找,找到目标值第一次出现时的下标和最后一次出现时的下标。注意边界条件。(如:目标值只在数组的首或尾出现了1次)# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): ...

2019-01-25 13:45:33 134

原创 滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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,...

2019-01-24 21:10:04 124

原创 判断平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路分析平衡二叉树要求左子树与右子树的高度之差的绝对值不大于1,左、右子树同样满足上述要求。需要在求取二叉树的高度的基础上稍加改动。二叉树的高度通常采用先序遍历的递归方式,递归的输入从根结点开始到左右子树直到叶子结点停止,递归的输出则是从叶子结点开始递归返回子树的高度,直到最后返回整棵树的高度。因此只需要在计算高度后加一个对左右子树...

2019-01-24 15:53:17 142

原创 二叉搜索树的后序遍历

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路分析二叉搜索树的左子树的结点值小于根结点值,右子树的结点值大于根节点的值,且左右子树同样符合上述条件。后序遍历序列的最后一个数是根结点的值,从左向右扫描数组,直到找到比根节点值大的数为止,此时指针位置i 将数列分为左右两部分,分别表示左、...

2019-01-24 15:05:17 130

原创 树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路分析主函数从A的根结点开始遍历,当遍历到结点a时,若a与B的根结点值相同,调用一个子函数来判断以a为根结点的树是否包含B树,若包含,返回True,若不包含,继续遍历A的剩余结点,重复上述操作。子函数采用先序遍历对两个树的结点逐一比较根结点的值是否相等,若相等,继续遍历比较,若不相等,返...

2019-01-24 11:28:21 119

原创 数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路分析任务分为两部分:建立一种数据结构,当插入新数据时,维持这个数据结构。 随时获取当前数...

2019-01-23 23:10:13 239

原创 序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路序列化时:先根序遍历,None要用特殊符号‘#’表示,否则不能反序列化。例如,如下图所示的二叉树序列化为1,2,4,#,#,5,7,#,#,#,3,#,6,#,#反序列化时:还是利用先序遍历,碰到‘#’返回None。# -# -*- coding:utf-8 -*-# class TreeNode:# ...

2019-01-23 20:52:17 152

原创 把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路在宽度优先遍历的基础上,需要记录二叉树每行的结点个数,每一行打印成一个列表,最后的结果是一个二维列表。宽度优先遍历过程采用队列完成。下面分析如何记录每行的个数:用变量toPrint记录当前层需要打印的结点个数,nextLevel记录下一层需要打印的个数,当toPrint变为0时,将nextLevel的值赋给...

2019-01-23 19:53:57 138

原创 连续子数组的最大和

题目:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和(子向量的长度至少是1)。思路:在遍历数组的同时,设置两个变量,curSum用来...

2019-01-22 20:15:58 154

原创 数组中重复的数字

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。1. 可修改数组的方法,时间复杂度O(n),空间复杂度O(1)思路:长度为n的数组,每个数字都在0-n-1范围内。从头开...

2019-01-22 11:12:42 203 2

原创 堆排序的python实现及时间复杂度分析

堆是一种形如二叉树的抽象数据结构,要求根节点的元素大于(小于)左右子树的节点,左右子树也需满足上述条件,是一种递归定义。堆排序的python实现,主要分为两大部分:1.根据原始数组建立初始堆,只需要从最后一个父节点(数组的中间元素)开始向前逐一进行修改,修改是将其与后面的元素进行比较,交换。位于数组中间元素之后的元素看作树的叶子结点无需进行校正。这部分时间复杂度O(n) ;2.每次交换...

2018-12-28 20:36:18 523 1

原创 python递归时遇到的关于list的问题

在用递归寻找二叉树的所有路径的时候,出现了问题。由于list是可变对象,不同递归出口的path列表会相互影响,而如果用str存储路径则不会出现问题。最后找到的解决方法是append之前加一句path=path[:]或者path=path.copy().res = []res1 = []path = ''path1 = []def FindPath(root,path,res): ...

2018-12-27 16:13:44 1238

转载 pytorch Dataset类及图像增强

转载@[pytorch数据类的改写与图像增强 https://oldpan.me/archives/how-to-load-dataset-in-correctly-pytorch]

2018-12-26 11:16:32 1017

原创 剑指offer【14】动态规划 剪绳子

def maxProductAfterCutting_solution(length): if length &lt;2: #因为要求至少剪成两段 return -1 if length ==2: return 1 if length ==3: return 2 product={} product[1]=1...

2018-03-27 17:09:39 611

原创 归并排序及python递归实现

归并排序的思想可用分而治之概括,可由下图生动的诠释。图片来自https://www.cnblogs.com/chengxiao/p/6194356.htmlpython代码:归并排序,分而治之'''def merge(list1,list2): #将两个有序数组融合 ls=[] i=j=0 while i&lt;len(list1) and j&lt;len(list...

2018-03-18 21:28:51 498

原创 快速排序(递归和非递归)

1. 递归'''思路:指定第一个元素为基准,找到其的准确位置,将比基准小的放在基准的左面,比基准大的元素放在其右面。在左右两个子集中重复上述操作,递归。'''def pritation(ls,i,j): x=ls[i] while i&lt;j: while (ls[j] &gt;= x )and (i&lt;j): j=j-...

2018-03-16 21:25:47 191

原创 二分查找

python实现二分查找法def binary_search(ls,target): low=0 high=len(ls)-1 #-1是为了target大于ls范围时,下标溢出 while low &lt;= high: mid = int((low+high)/2) if ls[mid] == target: ret...

2018-03-16 15:24:03 233

原创 剑指offer【22】求链表倒数第K个结点

class listNode: def __init__(self,elem,next_=None): self.elem=elem self.next_=next_def findk(head,k): if k==0 or head==None: p=q=head i=0 j=0 ...

2018-03-08 22:19:19 121

原创 剑指offer【55】求二叉树的深度

先序遍历解法:class BintNode: def __init__(self,data,left=None,right=None): self.data=data self.left=left self.right=rightclass Solution: def depth(self,tree): ...

2018-02-28 19:30:07 129

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

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}递归思想:class BintNode: def __init__(self,data,left=None,right=None): self.data=d...

2018-02-28 19:23:39 138

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

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。python递归求解:class ListNode:    def __init__(self,elem,next_=None):        self.elem=elem               self.next_=next_#从尾到头打印链表class printReverse:    def print_...

2018-02-28 19:11:57 109

空空如也

空空如也

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

TA关注的人

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