算法
文章平均质量分 88
识醉沉香
渣渣一枚
展开
-
leetcode回溯法
有效的数独解题思路:记录某行、某列、3x3 宫格内数字class Solution: def isValidSudoku(self, board): """ :type board: List[List[str]] :rtype: bool """ rows = [{} for i in range(9...原创 2019-07-27 12:19:40 · 269 阅读 · 1 评论 -
leetcode数组
数组中重复的数据给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?代码:class Solution(object): def findDuplicates(self, nums): """ :t...原创 2019-07-27 14:04:24 · 817 阅读 · 1 评论 -
拓扑排序
课程表#参考刷题笔记现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?解题代码:解题思路:1、在开始排序前,扫描对应的存储空间,将入度为 0 的顶点均入队列。2、只要队列非空,就从队首取出...原创 2019-07-27 12:27:10 · 133 阅读 · 0 评论 -
leetcode 字符串
无重复字符的最长子串、解题代码:class Solution: def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ # 存储历史循环中最长的子串长度 max_len = 0 # ...原创 2019-07-27 11:39:48 · 827 阅读 · 0 评论 -
Trie 树
Trie 树 ,又叫字典树,前缀树(prefix Tree)、单词查找树 或键树,是一种多叉树结构。如图:表示关键字集合 {‘a’,‘to’,‘tea’,‘ted’,‘i’,‘in’,‘inn’}。Trie树的基本性质:根节点不包含字符,除根节点外的每一个子节点都包含一个字符从根节点到某一个节点,路径上经过的字符连接起来,为该字节对应的字符串。每一节点的所有子节点包含的字符互不相同。...原创 2019-07-31 16:04:18 · 221 阅读 · 0 评论 -
双指针
知识点:双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。Two Sum II - Input array is sortedclass Solution(object): def twoSum(self, numbers, target): """ :type numbers: List[int] :type tar...原创 2019-07-30 18:21:02 · 122 阅读 · 0 评论 -
图
1042. 不邻接植花有 N 个花园,按从 1 到 N 标记。在每个花园中,你打算种下四种花之一。paths[i] = [x, y] 描述了花园 x 到花园 y 的双向路径。另外,没有花园有 3 条以上的路径可以进入或者离开。你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回选择的方案作为答案 answer,其中 answer[i] 为在第 (...原创 2019-08-02 16:19:35 · 138 阅读 · 0 评论 -
leetcode 贪心策略
本质:每步只选择当前最优解贪心:不记录历史状态,只关心当前状态;动态规划:需要记录历史状态,在将来会被用到。1.问题描述(过河问题)在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时...原创 2019-04-25 11:04:27 · 915 阅读 · 0 评论 -
leetcode动态规划
最优子结构子问题最优问题可导出原问题最优决策无后效性重叠子问题去冗余空间换时间基本步骤:设计暴力算法,找到冗余设计并储存状态递归式(状态转移方程)自底向上计算最优解(编程方式)例题:983. 最低票价在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 ...原创 2019-04-16 21:37:38 · 650 阅读 · 1 评论 -
leetcode二叉树
树的属性:层次结构一个节点的所有子节点独立于另一个节点的子节点。二叉树:如果树中的每个节点最多有两个子节点,我们说该树是一个二叉树。1.列表表示的树在列表树的列表中,将根节点的值存储为列表的第一个元素;第二个元素:一个表示左子树的列表;第三个元素:表示右子树的另一个列表。2.节点表示用left 和right 的属性表示其他实例的引用。3 . 树的遍历前序:首先访问根节点,然...原创 2019-04-08 21:44:54 · 505 阅读 · 1 评论 -
排序
1.冒泡排序原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后...原创 2019-02-16 15:59:06 · 213 阅读 · 0 评论 -
leetcode单调栈
定义:单调栈是一种特殊的栈,在这个栈内只储存递增或递减的数组。例题:84.柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例:输入: [2,1,5,6,2,3]输出: 10解题思路:(利用单调栈)首先在数组最后加入0,这是为了方便处理完所有高度数据,假设储存高度坐标的栈为...原创 2019-03-31 20:59:58 · 875 阅读 · 0 评论 -
leetcode链表
例题2. 两数相加代码如下:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def addTwoN...原创 2019-04-03 21:46:50 · 336 阅读 · 1 评论