
Java算法
文章平均质量分 85
java算法专栏,解题的同时串讲数据结构
Super algorithm
C、Java学习者,算法爱好者!
物有本末,事有终始,知所先后。
夫天地者,万物之逆旅也;光阴者,百代之过客也。而浮生若梦,为欢几何?
人生如一场旅程,重要的不是目的地,而是沿途的风景和领悟。
互关私我呀~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode:6. N 字形变换
LeetCode:6. N 字形变换将一个给定字符串 s 根据给定的行数 `numRows` ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);原创 2023-07-23 12:38:18 · 832 阅读 · 3 评论 -
LeetCode:4. 寻找两个正序数组的中位数
LeetCode:4. 寻找两个正序数组的中位数题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。原创 2023-07-17 15:14:05 · 536 阅读 · 0 评论 -
LeetCode:3. 无重复字符的最长子串
LeetCode:3. 无重复字符的最长子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。原创 2023-07-15 16:22:02 · 568 阅读 · 0 评论 -
剑指 Offer - 字符串合辑
剑指 Offer - 字符串合辑 :剑指 Offer 05. 替换空格简单剑指 Offer 58 - II. 左旋转字符串简单剑指 Offer 20. 表示数值的字符串中等剑指 Offer 67. 把字符串转换成整数中等原创 2023-05-22 22:24:40 · 783 阅读 · 10 评论 -
LeetCode:347. 前 K 个高频元素
347. 前 K 个高频元素题目描述:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。原创 2023-05-08 23:33:05 · 677 阅读 · 8 评论 -
LeetCode:239. 滑动窗口最大值
LeetCode:239. 滑动窗口最大值题目描述:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。原创 2023-05-08 00:15:30 · 724 阅读 · 8 评论 -
LeetCode:15. 三数之和
LeetCode:15. 三数之和题目描述:给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。原创 2023-05-05 23:22:42 · 690 阅读 · 5 评论 -
LeetCode:383. 赎金信
LeetCode:383. 赎金信题目描述:给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。原创 2023-05-04 22:35:20 · 1077 阅读 · 5 评论 -
LeetCode:142. 环形链表 II
LeetCode:142. 环形链表 II题目描述:给定一个链表的头节点 head,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。原创 2023-04-29 21:59:10 · 1133 阅读 · 8 评论 -
LeetCode:面试题 02.07. 链表相交
LeetCode:面试题 02.07. 链表相交题目描述:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。原创 2023-04-28 23:11:58 · 1025 阅读 · 2 评论 -
LeetCode:19. 删除链表的倒数第 N 个结点
LeetCode:19. 删除链表的倒数第 N 个结点题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。原创 2023-04-27 23:45:04 · 335 阅读 · 2 评论 -
LeetCode:24. 两两交换链表中的节点
LeetCode:24. 两两交换链表中的节点题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2023-04-26 11:49:14 · 546 阅读 · 11 评论 -
LeetCode:206. 反转链表
LeetCode:206. 反转链表题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?原创 2023-04-26 00:07:20 · 684 阅读 · 3 评论 -
LeetCode:6390. 滑动子数组的美丽值
LeetCode:6390. 滑动子数组的美丽值题目描述:给你一个长度为 n 的整数数组 nums ,请你求出每个长度为 k 的子数组的 美丽值 。一个子数组的 美丽值 定义为:如果子数组中第 x 小整数 是 负数 ,那么美丽值为第 x 小的数,否则美丽值为 0 。请你返回一个包含 n - k + 1 个整数的数组,依次 表示数组中从第一个下标开始,每个长度为 k 的子数组的 美丽值 。子数组指的是数组中一段连续 非空 的元素序列。原创 2023-04-24 20:32:47 · 1155 阅读 · 9 评论 -
2023-spring 1. 补给马车
2023-spring 1. 补给马车 — 模拟~远征队即将开启未知的冒险之旅,不过在此之前,将对补给车队进行最后的检查。supplies[i] 表示编号为 i 的补给马车装载的物资数量。考虑到车队过长容易被野兽偷袭,他们决定将车队的长度变为原来的一半(向下取整),计划为:找出车队中 物资之和最小 两辆 相邻 马车,将它们车辆的物资整合为一辆。若存在多组物资之和相同的马车,则取编号最小的两辆马车进行整合;重复上述操作直到车队长度符合要求。请返回车队长度符合要求后,物资的分布情况原创 2023-04-23 10:17:57 · 507 阅读 · 8 评论 -
2023-spring 2.探险营地 — 字符串
2023-spring 2.探险营地探险家小扣的行动轨迹,都将保存在记录仪中。expeditions[i] 表示小扣第 i 次探险记录,用一个字符串数组表示。其中的每个「营地」由大小写字母组成,通过子串 -> 连接。例:"Leet->code->Campsite",表示到访了 “Leet”、“code”、“Campsite” 三个营地。expeditions[0] 包含了初始小扣已知的所有营地;对于之后的第 i 次探险(即 expeditions[i] 且 i > 0)原创 2023-04-22 21:23:40 · 866 阅读 · 3 评论 -
LeetCode:59. 螺旋矩阵 II
LeetCode:59. 螺旋矩阵 II ——数组操作给你一个正整数 `n` ,生成一个包含 1 到 `n`^2^ 所有元素,且元素按顺时针顺序螺旋排列的 `n` x `n` 正方形矩阵 `matrix` 。原创 2023-04-21 15:33:20 · 739 阅读 · 8 评论 -
LeetCode:459. 重复的子字符串 —【2、KMP算法】
LeetCode:459. 重复的子字符串给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。原创 2023-04-20 17:22:17 · 1054 阅读 · 9 评论 -
LeetCode:28. 找出字符串中第一个匹配项的下标 ——【1、理解 KMP 算法】
LeetCode:28. 找出字符串中第一个匹配项的下标 ——【1、理解 KMP 算法】给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。原创 2023-04-18 10:40:52 · 739 阅读 · 12 评论 -
LeetCode:剑指 Offer 58 - II. 左旋转字符串
LeetCode:剑指 Offer 58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。原创 2023-04-16 19:58:27 · 802 阅读 · 19 评论 -
LeetCode:454. 四数相加 II —— 哈希表为什么叫哈希表~
LeetCode:454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0原创 2023-04-14 11:13:24 · 849 阅读 · 38 评论 -
LeetCode:1. 两数之和——哈希表~
LeetCode:1. 两数之和——哈希表~题目描述:给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2023-04-13 11:26:30 · 1165 阅读 · 35 评论 -
LeetCode:376. 摆动序列——说什么贪心和动规~
LeetCode:376. 摆动序列——说什么贪心和动规~如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。子序列 可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。给你一个整数数组 nums ,返回 nums 中作为 摆动原创 2023-04-12 10:03:09 · 825 阅读 · 17 评论 -
LeetCode:102. 二叉树的层序遍历
LeetCode:102. 二叉树的层序遍历 _ 递归、迭代法 _ 你会建立一棵二叉树吗?给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。原创 2023-04-11 15:00:00 · 983 阅读 · 21 评论 -
LeetCode:77. 组合——回溯法,是暴力法?
LeetCode:77. 组合——回溯法 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。原创 2023-04-10 09:06:03 · 1227 阅读 · 36 评论 -
LeetCode:455. 分发饼干——贪心算法
LeetCode:455. 分发饼干 ——贪心算法贪心算法是在每个阶段选取局部最优解,最终得到全局最优解的一种思想。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。原创 2023-04-09 21:33:42 · 1039 阅读 · 30 评论 -
LeetCode:二叉树的前、中、后序遍历——如何创建一棵【二叉树】
LeetCode:二叉树的前、中、后序遍历——如何创建一棵【二叉树】给你二叉树的根节点 root ,返回它节点值的`前序`、`中序`、`后序`遍历。🌱[144、先序遍历]🌱[94、中序遍历]🌱[144、后序遍历]原创 2023-04-08 15:45:00 · 1792 阅读 · 28 评论 -
当ChatGPT教我学会【插入排序】
插入排序工作原理是通过构建有序序列,对于未排序数据,在已排序序列中,找到相应位置并插入。插入排序包括直接插入排序和希尔排序原创 2023-04-07 12:48:28 · 792 阅读 · 22 评论 -
LeetCode:150. 逆波兰表达式求值—栈
LeetCode:150. 逆波兰表达式求值—栈给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。原创 2023-04-05 09:12:49 · 850 阅读 · 18 评论 -
LeetCode:1047. 删除字符串中的所有相邻重复项——栈
LeetCode:1047. 删除字符串中的所有相邻重复项给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。道阻且长,行则将至。原创 2023-04-04 15:23:36 · 599 阅读 · 7 评论 -
LeetCode:20. 有效的括号——栈和队列
LeetCode:20. 有效的括号——栈和队列题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。原创 2023-04-02 23:30:04 · 579 阅读 · 18 评论 -
【创作赢红包】LeetCode:232. 用栈实现队列
LeetCode:232. 用栈实现队列栈(STACK)是一种`先进后出`(LIFO)的数据结构。队(QUEUE)列是一种`先进先出`(FIFO)的数据结构。原创 2023-03-31 23:06:22 · 846 阅读 · 13 评论 -
LeetCode:剑指Offer 05. 替换空格 (字符串)
LeetCode:剑指Offer 05. 替换空格 & 151. 反转字符串中的单词给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。🍎道阻且长,行则将至。🍓!!!原创 2023-03-30 21:35:42 · 1193 阅读 · 7 评论 -
LeetCode:344. 反转字符串
LeetCode:344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。🍎道阻且长,行则将至。🍓!!!原创 2023-03-29 22:46:53 · 857 阅读 · 11 评论 -
LeetCode:121.买卖股票的最佳时机——动态规划
121. 买卖股票的最佳时机(1、2)——动态规划、贪心策略给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择**某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票**。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。🍎道阻且长,行则将至。🍓!!!原创 2023-03-29 18:19:44 · 3119 阅读 · 9 评论 -
LeetCode:322. 零钱兑换——动态规划从案例入门
LeetCode:322. 零钱兑换——动态规划从案例入门🍎道阻且长,行则将至。🍓!!!原创 2023-03-28 11:42:19 · 2132 阅读 · 22 评论 -
LeetCode:202. 快乐数
LeetCode:202. 快乐数题目描述:编写一个算法来判断一个数 n 是不是快乐数。快乐数定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。原创 2023-03-26 21:32:47 · 997 阅读 · 9 评论 -
LeetCode:242. 有效的字母异位词
LeetCode:242. 有效的字母异位词、349. 两个数组的交集。哈希表是根据关键码的值而直接进行访问的数据结构。就可以认为是一个数组,关键码就是指这个元素一个存储在数组的哪个位置。在Set集合里HashSet,会根据hashcode(哈希值)来存储元素。要在一个数组中查找一个元素,去一个个遍历,这个复杂度就是O(n),而使用哈希表复杂度是O(1)。在哈希表存储元素的过程中,可能存储的元素得到的哈希值大于你的数组下标,我们通常会对哈希值进行取余操作后放入对应的数组位置。原创 2023-03-25 13:14:27 · 968 阅读 · 4 评论 -
LeetCode:203. 移除链表元素
LeetCode:203. 移除链表元素。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。🌻算法,不如说它是一种思考方式🍀原创 2023-03-24 23:33:04 · 531 阅读 · 11 评论 -
LeetCode:209. 长度最小的子数组
LeetCode:209. 长度最小的子数组,双指针法🌻算法,不如说它是一种思考方式🍀原创 2023-03-24 11:52:56 · 640 阅读 · 2 评论