数据结构与算法 Leetcode
记录自己的刷题过程
CSJ_CH3COOK
好好学习,天天向上
展开
-
记一次看着自己被踢出前100的双周赛——Leetcode第23场双周赛
记一次看着自己被踢出前100的双周赛——Leetcode第23场双周赛整体来说,这是一个套让我坐下来很顺手的卷子,总共花了45分钟左右排名92,但是由于之前三个错误提交,被踢到了156。(以后提交需谨慎啊!)5360. 统计最大组的数目题目描述题目来源:https://leetcode-cn.com/problems/count-largest-group给你一个整数 n 。请你先求出从...原创 2020-04-05 12:36:15 · 341 阅读 · 4 评论 -
记一次成功做出四道题的 Leetcode 单周赛 —— 第 181 场单周赛及其题目详解
记一次成功做出四道题的 Leetcode 单周赛 —— 第 181 场单周赛及其题目详解5364. 按既定顺序创建目标数组(3分)题目来源:https://leetcode-cn.com/problems/create-target-array-in-the-given-order/给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:目标数组 target 最初为...原创 2020-03-22 17:19:42 · 2617 阅读 · 1 评论 -
广度优先搜索 BFS 专题 (II):Leetcode 130 被围绕的区域 + Leetcode 200 岛屿数量
广度优先搜索 BFS 专题 (II):Leetcode 130 被围绕的区域 + Leetcode 200 岛屿数量广度优先搜索的主要思想是:将目前所能发现的节点(位置)记录进栈,并随着时间推移,对这些点进行一一检索,达到一个遍历该联通集合中的所有节点的目的。Leetcode 130 被围绕的区域来源:https://leetcode-cn.com/problems/surrounded-r...原创 2020-03-09 14:48:35 · 237 阅读 · 2 评论 -
Python 面向对象编程 + 基本数据结构实现【part 3】:Trie 字典树
Python 面向对象编程 + 基本数据结构实现【part 3】:Trie 字典树字典树是一种树状抽象数据结构,能够存储一系列字符串,在 O(N)O(N)O(N) 时间内插入及读取一个单词。对于英文的前缀字典树的每个节点,最多有 262626 个可能的子节点,这个数据量显然用哈希( dict() )这个数据结构来存储后继效率更高。...原创 2020-02-21 14:00:11 · 129 阅读 · 0 评论 -
Python 面向对象编程 + 基本数据结构实现【part 2】:堆、二叉树及其遍历
Python 面向对象编程 + 基本数据结构实现【part 2】:堆、二叉树(施工中)堆定义(摘自百度百科)堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆...原创 2020-02-17 22:14:20 · 308 阅读 · 0 评论 -
动态规划专题 (III):Leetcode 72 编辑距离
动态规划专题 (III):Leetcode 72 编辑距离Leetcode 72 编辑距离题目描述给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: ho...原创 2020-02-17 13:32:33 · 119 阅读 · 0 评论 -
分治、递归算法专题 (II):Leetcode 17 电话号码的字母组合 + Leetcode 34 在排序数组中查找元素的第一个和最后一个位置
分治算法专题 (II):Leetcode 17 电话号码的字母组合 + Leetcode 34 在排序数组中查找元素的第一个和最后一个位置Leetcode 17 电话号码的字母组合题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af"...原创 2020-02-13 11:39:59 · 196 阅读 · 0 评论 -
链表专题 (III):Leetcode 141 环形链表 + (环状链表的实现) + Leetcode 142 环形链表 II
链表专题 (III):环状链表的实现 + Leetcode 141 环形链表 + Leetcode 142 环形链表 II环状链表的实现首先,先创建一个根据列表以及 pos 这个参数实现环状链表的代码,是在:Python 面向对象编程 + 基本数据结构实现:链表、跳表、二叉树(施工中) 这篇文章中的实现的一个扩展。代码如下:class SingleLinkList(object): ...原创 2020-02-12 20:01:52 · 305 阅读 · 0 评论 -
广度优先遍历BFS专题: Leetcode127 单词接龙
@[email protected]最近外面疾病爆发,在家里实在没事情做,就在leetcode上面做点的题目这个样子。武汉加油!上海也加油!Leetcode127 单词接龙(想直接粘代码的,直接看第二个板块)1. BFS建字典网络首先想到的是用BFS进行搜索:就是先建立一个网络,两个字母之间“编辑距离”相差为1的,建立起链接(也就是写道邻接表里去)。注:我还不太会用python的cla...原创 2020-01-28 00:40:18 · 294 阅读 · 0 评论 -
深度优先遍历DFS专题: Leetcode 207 课程表 + Leetcode 802 找到最终的安全状态
Leetcode 207 课程表这题的问题是:是否能够修完所有的课。而修完所有课的先决条件是,这门课的后继节点不可能是这门课的前驱节点,也就是说,不存在环。因此这题就很简单,用一个深度优先搜索判断有向图中是否有环,就能判定是否能够修完。因此思路非常简单,先构建一个图,然后再用图的深度优先搜索就能得到结果:如果一个白节点的后续是灰节点,就说明遇到了环。代码如下:def canFinish(...原创 2020-01-28 12:42:28 · 229 阅读 · 0 评论 -
动态规划专题 (II):Leetcode 198 打家劫舍 + Leetcode 213 打家劫舍 II
动态规划专题 (II):Leetcode 198 打家劫舍 + Leetcode 213 打家劫舍 IILeetcode 198 打家劫舍题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报...原创 2020-02-09 15:37:55 · 138 阅读 · 0 评论 -
动态规划专题 (I) :Leetcode 62 不同路径 + Leetcode 63 不同路径II + Leetcode 64 最小路径和
Leetcode 62 不同路径题目描述一个机器人位于一个 m×nm \times nm×n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?第一反应:divide and conquer递归:很容易可以看出,当前 m×nm\times nm×n 网格的结...原创 2020-01-29 14:30:24 · 308 阅读 · 0 评论 -
使用栈解题专题 (II):Leetcode 232 用栈实现队列
Leetcode 232 用栈实现队列主要想检测一下我面向对象编程学的咋样????,学过数据结构的肯定见过这道题,就是两个栈之间倒来倒去:如果第一个栈空,在第二个栈中append一个元素,再把第一个栈中的元素用extend函数复制过去,将第二个栈置为空列表,如果第二个栈空,则反之。执行过程中,一直保证每次一个栈保持着队列的顺序,另一个栈为空。然后 pop 和 peek 函数分别看非空栈的最后一位就...原创 2020-01-30 15:22:11 · 180 阅读 · 0 评论 -
使用栈解题专题 (I):Leetcode 20 有效括号 + Leetcode 150 逆波兰表达式
Leetcode 20 有效括号很经典的一道利用栈的题目,而且在 python 中,利用 list 数据结构的 append 与 pop 函数就可以轻松的做到实现栈:思路如下:如果碰到左括号,则直接压入栈中如果碰到右括号,则判断栈顶是否是对应的左括号(比如 “)” 与 “(” )。如果是,则将栈顶;如果不是,则将右括号压入栈中。(注:在这里我是先都压进去,然后判断是否需要将栈顶两个元素同...原创 2020-01-30 01:00:41 · 228 阅读 · 0 评论 -
链表专题 (IV):Leetcode 206 反转链表 + Leetcode 92 反转链表 II
链表专题 (IV):Leetcode 206 反转链表 + Leetcode 92 反转链表 IILeetcode 206 反转链表题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解一个简单的思路,使用辅助栈:从头到尾遍历列表,将节点地址写入一个...原创 2020-02-10 13:47:30 · 212 阅读 · 0 评论 -
链表专题 (II):Leetcode 83. 删除排序链表中的重复元素 + Leetcode 82 删除排序链表中的重复元素 II
链表专题 (II):Leetcode 83 删除排序链表中的重复元素 + Leetcode 82 删除排序链表中的重复元素 II如何根据列表构建链表在:Python 面向对象编程自学笔记 + 基本数据结构实现(链表,跳表,二叉树)这篇文章的数据结构实现部分中。不知道为什么这里扩展的问题编号为 (II) 的排在了编号为 (I) 的前面。Leetcode 83 删除排序链表中的重复元素题目...原创 2020-02-09 23:32:41 · 199 阅读 · 0 评论 -
链表专题 (I):Leetcode 19 删除链表的倒数第N个节点 + Leetcode 24 两两交换链表中的节点 + Leetcode 61 旋转链表
链表专题:Leetcode 19 删除链表的倒数第N个节点 + Leetcode 24 两两交换链表中的节点 + Leetcode 61 旋转链表Leetcode 19 删除链表的倒数第N个节点题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链...原创 2020-02-09 14:50:06 · 196 阅读 · 0 评论 -
分治、递归算法专题 (I):Leetcode 50 Pow(x, n) + Leetcode 14 最长公共前缀
Leetcode 50 Pow(x, n)典型的分治算法:时间复杂度O(logN)O(\log{N})O(logN)。对于正幂来说:{xn=xn/2∗xn/2if n mod 2 = 0xn=xn/2∗xn/2∗xif n mod 2 = 1\begin{cases}x^{n} = x^...原创 2020-01-28 12:55:28 · 160 阅读 · 0 评论 -
Python 面向对象编程 + 基本数据结构实现【part 1】:链表、跳表
Python 面向对象编程自学笔记(编译器:Spyder 3.3.6)Cpt1. 简单实现定义对象:类 class (这个定义是否与 C语言中的结构体相似?)class Test: def pr(self): self.height = 20在这个大类里,就添加了 height 这个信息。关于如何使用这个类:a = Test()这样就对 a 附上了 Test 这个类的信息:(当然...原创 2020-01-30 14:05:43 · 507 阅读 · 0 评论