![](https://img-blog.csdnimg.cn/20190903204758221.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
我是天才很好
深度学习算法工程师
github: https://github.com/wstchhwp
个人邮箱:1103540209@qq.com
展开
-
[python]动态规划
动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。动态规划往往用于优化递归问题,例如斐波那契数列,如果运用递归的方式来求解会重复计算很多相同的子原创 2020-08-30 10:20:02 · 1167 阅读 · 0 评论 -
堆排序算法(图解详细流程)
堆排序的时间复杂度O(N*logN),额外空间复杂度O(1),是一个不稳定性的排序。文章目录一、 准备知识大根堆和小根堆二 、堆排序基本步骤2.1 构造堆2.2 固定最大值再构造堆三、 总结四、 代码一、 准备知识堆的结构可以分为大根堆和小根堆,是一个完全二叉树,而堆排序是根据堆的这种数据结构设计的一种排序,下面先来看看什么是大根堆和小根堆?大根堆和小根堆性质:每个结点的值都大于其左孩子...转载 2020-03-28 21:57:48 · 686 阅读 · 0 评论 -
[python]树的前序、中序、后序遍历及深度优先算法DFS、广度优先算法BFS
树是一种的经典数据结构,它是典型递归思想来的,学习树有助于学习递归思想以及栈、队列,本文对树的结构、遍历算法以及Python实现做总结,以供复习拓展。树是连通的无环图,最常利用的有二叉树,即一个节点最多只有两个子节点,称为左子树和右子树。但是树都是相通的,无论是二叉树或者多个节点的树都能一般能用递归方法进行求解。二叉树节点之间的顺序一般不可调换,在数据结构定义时,左是左,右是右,不会说节点1,节点2。二叉排序树又叫二叉查找树或者二叉搜索树:1)若左子树不空,则左子树上所有结点的值均小于它的根节点的值;2转载 2020-08-30 11:16:42 · 587 阅读 · 0 评论 -
[python]回溯Backtracking
leetcode 46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutationsclass Solution: def permute(self, nums): # 记录元素是否被选择过原创 2020-09-05 13:05:33 · 1017 阅读 · 0 评论 -
[python]深度优先搜索算法DFS
leetcode200. 岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[[‘1’,‘1’,‘1’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘0’,‘0’]]输出: 1示例 2:输入:[[‘1’,‘1’,‘原创 2020-09-05 11:50:50 · 1229 阅读 · 0 评论 -
[python]广度优先搜索算法BFS
leetcode 994. 腐烂的橘子在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[[2,1,1],[0,1,1],[1,0,1]]输出:-1解释:左下角的橘子(第 2原创 2020-09-01 22:18:21 · 1687 阅读 · 0 评论 -
[python]常见的六种排序算法
冒泡排序bubble_sortdef bubble_sort(list): for i in range(0,len(list)-1): flag = 0 for j in range(0,len(list)-1-i): if list[j] > list[j+1]: list[j], list[j+1] = list[j+1], list[j] flag += 1原创 2020-09-05 16:35:21 · 286 阅读 · 0 评论 -
【leetcode】1.两数之和
说明:本文为博主原创文章,未经博主允许不得转载。如果代码有不懂的,欢迎与我探讨!邮箱:1103540209@qq.comgithub地址:https://github.com/wstchhwpclass Solution: def twoSum(self,nums,target): for i in range(len(nums)): a_...原创 2019-08-06 16:20:01 · 244 阅读 · 0 评论