
LC and PAT
文章平均质量分 93
本专栏主要整理刷题过程中的一些解题思路,主要包括PAT、HDU、LeetCode、CodeTop、牛客网、洛谷等
长路漫漫2021
I confess that I have been blind as a mole, but it is better to learn wisdom late than never to learn it at all.
展开
-
数组(六)-- LC[1851] 包含每个查询的最小区间
本篇主要以LeetCode[1851] 包含每个查询的最小区间为例,学习排序算法、优先队列、并查集的使用。原创 2023-08-08 17:00:00 · 358 阅读 · 0 评论 -
数学(五) -- LC[415]&[455] 字符串相加与两数相加
本篇主要学习按位相加,采用模拟法进行数字字符串、数字链表的相加。原创 2023-08-08 11:02:55 · 300 阅读 · 0 评论 -
栈(一)-- LC[150] 逆波兰表达式求值
LeetCode[150] 逆波兰表达式求值主要就是栈的使用和一些运算的技巧原创 2023-02-21 22:30:00 · 275 阅读 · 0 评论 -
数组(九)-- LC[316]&[321]&[402] 去除重复字母
移掉 K 位数字、去除重复字母、拼接最大数这三道题目都是同一套路,即删除或者保留若干个字符,使得剩下的数字最小(或最大)或者字典序最小(或最大)。而解决问题的前提是要有一定数学前提。而基于这个数学前提,我们贪心地删除栈中相邻的字符。如果你会了这个套路,那么这三道题目应该都可以轻松解决。原创 2023-04-11 23:04:03 · 447 阅读 · 0 评论 -
数组(八)-- LC[53]&[152] 最大子数组之和与乘积最大子数组
本篇主要以解决最大子数组之和与乘积,详细分析动态规划的思考过程,同时也分析暴力法、贪心算法和分治法如何使用原创 2023-04-04 21:30:00 · 554 阅读 · 0 评论 -
数组(七)-- LC[74]&[240] 搜索二维矩阵
本篇分享LeetCode 搜索二维矩阵的两道题目,主要学习二分查找和双指针算法原创 2023-04-03 21:29:29 · 331 阅读 · 0 评论 -
数组(五)-- LC[48]&[54]&[59] 旋转矩阵与螺旋矩阵
二维数组的遍历也属于常考题,思路不难,但要考虑边界,本篇就带你走进矩阵按形状和方向分别遍历原创 2023-03-27 21:37:42 · 605 阅读 · 0 评论 -
数组(四)-- LC[1574] 删除最短的子数组使剩余数组有序
LC[1574] 删除最短的子数组使剩余数组有序,通过题目深入理解滑动窗口的思想原创 2023-03-26 16:33:37 · 293 阅读 · 0 评论 -
数组(三)-- LC[370]&[1109]&[1094] 区间加法
本篇主要以LeetCode[370]区间加法、LeetCode[1109]航班预定统计、LeetCode[1094]拼车为例,讲解差分数组的思想和应用。原创 2023-02-27 21:30:00 · 417 阅读 · 0 评论 -
数组(二)-- LC[303]&[304] 区域和检索 - 数组不可变
做这种初始化一次、检索多次的题目的秘诀:在初始化的时候做预处理,前缀和技巧就适⽤于快速、频繁地计算⼀个索引区间内的元素之和。本节主要学习区域和检索在数组和矩阵不可变情况下的,如何使用前缀和技巧提高效率。原创 2023-02-25 11:11:22 · 594 阅读 · 0 评论 -
数组(一)-- LC[26]&[80] 删除有序数组中的重复元素
LeetCode[26] 删除有序数组中的重复元素,原地删除重复出现的元素,使每个元素 只出现1/2次,返回删除后数组的新长度。元素的 相对顺序应该保持一致。使用双指针的通用解法原创 2023-02-21 20:31:36 · 381 阅读 · 0 评论 -
字符串(二)-- LC[17] 电话号码的字母组合
LC[17] 电话号码的字母组合,本题主要考察字符串的操作,回溯和递归的理解,以及队列的使用原创 2023-03-27 09:30:00 · 580 阅读 · 0 评论 -
字符串(一)-- LC[3] 无重复字符的最长子串
LeetCode[3] 无重复字符的最长子串使用滑动窗口,就是使用两个指针,指针头和指针尾依次遍历,当指针尾遍历到的字母包含在指针头和指针尾的字符串里,就把指针头移动到当前字母出现的位置,重新构成一个子串,并判断当前子串的长度与原来记录的最大长度作比较,并更新最大长度。原创 2023-02-21 16:42:34 · 430 阅读 · 0 评论 -
数学(四) -- LC[29]&[166] 两数相除与分数到小数
本篇主要学习LeetCode两数相除里面用到的快速乘和二分查找的算法进行两数的相除,同时学习长除法的解题技巧原创 2023-05-23 20:34:22 · 863 阅读 · 0 评论 -
数学(三) -- LC[1010]&[1015] 可被 K 整除的最小整数
本篇主要结合LeetCode上的题目分析常用的取模运算、带余除法、鸽巢定理、组合数学的解题技巧。原创 2023-05-10 20:08:21 · 671 阅读 · 0 评论 -
数学(二)-- LC[204] 计数质数
LeetCode[204] 计数质数,涉及的知识主要有质数的判断、枚举法、厄拉多塞筛算法原创 2023-02-22 22:05:34 · 523 阅读 · 0 评论 -
数学(一)-- LC[12]&[13] 整数转罗马数字
LeetCode[12] 整数转罗马数字分别使用模拟法和硬编码数字两种解法原创 2023-02-21 21:30:00 · 344 阅读 · 0 评论 -
Python数据结构与算法篇(十五)-- 二叉树的遍历:深度优先搜索与广度优先搜索
本篇带你走进二叉树,使用深度优先搜索和广度优先搜索思想进行二叉树的顺序遍历和层序遍历,带你刷遍LeetCode上的二叉树遍历题目。原创 2023-05-24 23:20:23 · 3994 阅读 · 0 评论 -
Python数据结构与算法篇(十三)-- 位运算与使用技巧
本篇主要学习Python中的二进制运算,通过位运算实现乘除法、交换两数、判断奇偶数、交换符号、求绝对值、二进制逆序、统计二进制中1的个数,最后结合LeetCode常见题目进行练习。原创 2023-03-23 16:04:18 · 1917 阅读 · 28 评论 -
Python数据结构与算法篇(十一)-- 链表的应用与常见题型
本篇信息量巨大,首先对比链表和数组,接着解决单链表的反转、删除某一节点、插入数据、查找中间节点、求倒数第k个结点、对称链表、单链表是否有环、两个链表是否相交,最后用LeetCode上的真题来实战删除链表结点、反转链表、合并、排序、环形链表常用技巧。原创 2023-03-14 22:22:28 · 2100 阅读 · 50 评论 -
Python数据结构与算法篇(九)--单调栈与单调队列
本篇主要以LeetCode上题目为例,合适的数据结构可以有效地降低算法的复杂度,本文分析单调栈和单调队列的使用技巧,以及如何在题目中灵活应用。原创 2023-04-18 23:11:45 · 2013 阅读 · 1 评论 -
Python数据结构与算法篇(六)-- 哈希表
散列表(hash table),又名‘hash表’,它用的是数组支持按照下标随机访问数据(时间复杂度O(1))的特性,散列表其实就是基于数组结构的一种扩展。散列表这种数据结构虽然支持非常高效的数据插入、删除、查找操作,但是散列表中的数据都是通过散列函数打乱之后无规律存储的。也就说,它无法支持按照某种顺序快速地遍历数据,所以我们常常会将散列表和链表(或者跳表)结合在一起使用。原创 2023-03-26 21:30:00 · 4005 阅读 · 20 评论 -
Python数据结构与算法篇(五)-- 二分查找与二分答案
二分查找是解决很多查找类题目的常用方法,它可以达到O(log n)的时间复杂度。二分查找有很多种变体,使用时需要注意查找条件,判断条件和左右边界的更新方式,三者配合不好就很容易出现死循环或者遗漏区域,本篇中我们将介绍常见的几种查找方式的模板代码和常见的解题技巧,带大家学透二分算法原创 2023-03-29 19:45:40 · 2940 阅读 · 23 评论 -
Python数据结构与算法篇(四)-- 滑动窗口算法
本篇带你走进滑动窗口算法,进一步强化双指针的使用, 滑动窗口算法常用于字符串匹配问题和子数组问题,本篇就总结出来Python的编写模板,从此刷题不心慌!原创 2023-03-24 15:36:30 · 3599 阅读 · 30 评论 -
Python数据结构与算法篇(三)-- 快慢指针与碰撞指针
数组是一种基础数据结构,可以用来处理常见的排序和二分搜索问题,典型的处理技巧包括对双指针、滑动窗口等,数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的,所以二者是相似的。双指针⼜分为中间向两端扩散的双指针、两端向中间收缩的双指针、快慢指针。本篇主要分析双指针在字符串数组中常用解题套路原创 2023-03-09 21:30:00 · 1941 阅读 · 0 评论 -
Python数据结构与算法篇(二)-- 前缀和与差分数组
前缀和主要适用的场景是原始数组不会被修改的情况下,适用于快速、频繁地计算一个索引区间内的元素之和以及频繁查询某个区间的累加;差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。本节主要学习算法的原理,结合LeetCode题目分析如何使用这些技巧。原创 2023-03-12 19:36:16 · 2277 阅读 · 1 评论 -
PAT(Basic Level)(四)-- Practice 1068 万绿丛中一点红
本题为PAT (Basic Level)1068题,这里主要分享题目的理解和解题思路,主要通过填充法进行实现,并使用嵌套列表和数组两种方式进行实现。原创 2022-05-22 16:44:35 · 250 阅读 · 0 评论 -
PAT (Basic Level) (三)-- Practice 1050 螺旋矩阵
本文主要对PAT1050螺旋矩阵的解题思路进行分析,主要是矩形法和碰壁法,并用Python实现。原创 2022-05-13 22:51:39 · 307 阅读 · 0 评论 -
PAT (Basic Level)(二)-- Practice 1015 德才论
这个主要是针对浙大PAT (Basic Level) Practice 1015 德才论题目的思路分析,因为自己的思路算法效率低下,借鉴了其他小伙伴的思路,并优化算法,顺利通过。原创 2022-04-24 22:49:19 · 266 阅读 · 0 评论 -
PAT (Basic Level)(一)-- Practice1003 字符串
主要分析PAT(Basic Level)1003输入符合要求的字符串,这里主要分析解题思路和Python实现。原创 2022-04-15 17:46:47 · 367 阅读 · 0 评论