
LeetCode刷题
文章平均质量分 92
开启力扣之旅(主要是一些解题总结,会按照专题分类)
nanyidev
这个作者很懒,什么都没留下…
展开
-
LeetCode动态规划(四)之打家劫舍&买卖股票
对于动态规划来说,有两个比较有意思的专题,就是打家劫舍和买卖股票,也可以说是经典问题。原创 2023-06-26 10:38:43 · 474 阅读 · 0 评论 -
LeetCode动态规划(一)之动规思想概述&基础题目
其中F(0) = 0,F(1) = 1。比如F(6)= F(5)+F(4),然后分别计算F(5)和F(4),但是计算F(5)时还会遇到计算F(4),但此时他们俩已经彼此分开了。给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。输入:obstacleGrid = [ [0,0,0],[0,1,0],[0,0,0] ]输入:cost = [1,100,1,1,1,100,1,1,100,1]解释:F(3) = F(2) + F(1) = 1 + 1 = 2。原创 2023-06-25 22:04:01 · 561 阅读 · 0 评论 -
LeetCode数学相关题目
主要介绍关于数学的一些题目这些题目技巧性都比较大,没有什么特殊的数据结构和算法,有时就很简单,没思路时也是挺烦。主打的就是模拟或者看破本质。原创 2023-05-13 21:22:47 · 610 阅读 · 0 评论 -
LeetCode动态规划(三)之子序列问题
开篇肯定回顾一下动规5部曲确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组子序列问题。原创 2023-05-14 18:05:22 · 451 阅读 · 1 评论 -
LeetCode之回溯算法
(如果要问为什么还需要startIndex,因为这还是组合问题啊,也就是不能走回头路,比如[1,2,3],目标和是4,你可以选[1,1,2],如果没有startIndex,当你到2的时候,又会有[2,1,1]的可能!首先需要建立一个映射,从字符2-9映射到字母,可以hash可以数组。输入:nums = [1,2,2] 输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]原创 2023-05-09 14:07:49 · 1062 阅读 · 0 评论 -
leetcode字符串(上)——字符串操作
对于字符串的相关题目,主要分为两类字符串操作字符串匹配本文主要介绍字符串操作相关,包括反转,压缩,替换 等java字符串(String & StringBuilder)leetcode字符串小结(下)原创 2023-03-10 09:55:06 · 645 阅读 · 0 评论 -
LeetCode算法思想之滑动窗口
滑动窗口,可以称为固定间距的双指针(快慢指针+固定步长)由于它自己独特的性质,所以专门拿出来探讨(双指针指路应用场景:数组,字符串先上东哥()的模板(对于模板,可能会限制你的思维,但有时在你突然没有思路的时候有很有帮助)/* 滑动窗口算法框架 */ void slidingWindow(string s) {// hashmap一般用来判断窗口内的字符是否有重复 int left = 0 , right = 0;// c 是将移入窗口的字符 char c = s . charAt(right)原创 2023-03-07 09:57:34 · 603 阅读 · 0 评论 -
LeetCode链表(链表操作,反转链表,奇偶链表,排序链表)
本篇文章更注重于链表自身的特点。链表是一种通过指针串联在一起的线性结构。链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表的入口节点称为链表的头结点也就是head。(1)单链表每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。(2)双链表每一个节点有两个指针域。原创 2023-03-06 20:32:21 · 1528 阅读 · 0 评论 -
LeetCode算法复杂度分析(时间复杂度&空间复杂度)
我们知道,研究算法的最终目的就是如何花更少的时间如何占用更少的内存去完成相同的需求。我们要计算算法时间耗费情况,但我们并不能将时间占用和空间占用量化。所以我们得度量算法的执行时间,那么如何度量呢?我们分析一个算法的运行时间,最重要的就是把核心操作的次数和输入规模关联起来。统计 算法使用内存空间随着数据量变大时的增长趋势.通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」原创 2023-03-01 20:31:30 · 961 阅读 · 0 评论 -
LeetCode算法技巧之双指针(左右指针,快慢指针,排序+双指针)
(1)简介首先明确一下,这里的指针并非C或C++中的指针,从名字容易产生误解,这只是一种算法思想,也不是一种数据结构。这里的指针准确的说其实就是索引,回想在数组遍历的时候,经常会写for循环,用一个指针来记录当前遍历的项(arrays[ i ])。那么双指针实际上就是有两个这样的指针一般可以分为左右指针,快慢指针,和固定间距指针(滑动窗口中常见,文章链接(2)应用场景数组,字符串,链表等数组和字符串:前后指针较多,快慢指针也有快慢指针(因为链表没有索引,不容易得到尾指针)原创 2023-02-22 09:37:46 · 2163 阅读 · 0 评论 -
leetcode栈&队列&优先队列(上)之理论篇(Java实现)
学习数据结构,需要先搞清楚自己语言是怎么实现的。栈与队列是每个学数据结构最早接触的数据结构,相信很多人对这两种数据结构的特性清楚地了解,但是也仅限于此。所以本文以leetcode习题为例,深入探索这两种数据结构,以及如何灵活运用这两种数据结构的思想,为下篇leetcode栈与队列实战篇(链接)铺垫。leetcode栈与队列(下)之实战篇(java实现)先进先出先进后出。原创 2022-09-15 15:59:49 · 707 阅读 · 0 评论 -
LeetCode位运算(找出落单的数,二进制中1的个数,2的幂等)
位运算操作符。原创 2022-10-12 00:27:10 · 655 阅读 · 0 评论 -
LeetCode哈希表(哈希集合,哈希映射)
哈希表是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。有两种不同类型的哈希表:哈希集合和哈希映射。哈希集合是集合数据结构的实现之一,用于存储非重复值。哈希映射是映射 数据结构的实现之一,用于存储(key, value)键值对。原创 2022-09-22 15:43:49 · 2002 阅读 · 0 评论 -
LeetCode数组(二分查找,双指针,滑动窗口,区间问题,二维数组)
数组可以说是大家最早接触的数据结构了,上手应该比较快。数组的基本操作,可以快速回顾数组查找,删除,添加以及内存分布等本文主要是leetcode的习题解析。题目的解法还是秉持一贯的原则,要么很容易想到(或者根据先验知识去联想),要么非常巧妙复杂度低,有些不容易想到或者复杂度高的就没有写出来了。原创 2022-09-24 15:44:41 · 1104 阅读 · 0 评论