leetcode
文章平均质量分 95
my leetcode solutions by C and Java
aabond
这个作者很懒,什么都没留下…
展开
-
重温数据结构与算法之前缀和
前缀和(Prefix Sum),也被称为累计和,是一种在计算机编程算法领域中广泛应用的重要概念和技巧。它通过将一个序列中的元素累加起来,得到一个新的序列,其中每个元素表示原序列中对应位置及其之前所有元素的和。前缀和的简洁性和高效性使其在各种算法和问题中有着广泛的应用。前缀和有许多实际的应用。例如,前缀和可以用于计算区间内的和。无论是静态区间查询还是动态更新的场景,前缀和都可以为我们提供快速的求解方法。它可以在常数时间内计算出任意区间的和,而不受区间长度的影响。这种特性使得前缀和在处理数据流问题时非常有用。原创 2023-11-10 17:54:16 · 353 阅读 · 0 评论 -
重温数据结构与算法之Manacher算法
回文子串,顾名思义,即字符串中满足回文性质的子串。在算法设计与分析中,回文子串经常作为研究和讨论的重点,例如 POJ 3974 题目中的最长回文子串问题,以及 LeetCode 0005 题目中求解最长回文子串长度的问题。中心扩展算法是一种简单直观的方法,它通过以每个字符为中心向两边扩展来寻找回文子串,然而其时间复杂度为On2O(n^2)On2,动态规划同样,也存在效率低下的问题。马拉车算法(Manacher Algorithm)是一种高效解决回文字符串问题的算法。原创 2023-08-08 23:19:26 · 462 阅读 · 0 评论 -
重温数据结构与算法之摩尔投票法
在统计学中,众数是一种重要的集中趋势指标,它表示一组数据中出现次数最多的那个值。此外在一个集合中,如果一个元素的出现次数比其他所有元素的出现次数之和还多,那么就称它为这个集合的绝对众数(等价地说,绝对众数的出现次数大于总元素数的一半)。例如,在{1,2,3,3,4}这组数据中,3就是众数,因为它出现了两次,而其他值都只出现了一次,但是没有绝对众数。寻找众数可以帮助我们了解数据的主要特征和分布情况,在某些场合下也可以作为数据代表或近似值。例如,在民意调查中,我们可能会关注哪个候选人得到了最多人的支持;原创 2023-03-27 11:00:00 · 1292 阅读 · 0 评论 -
重温数据结构与算法之宽度优先搜索
广度优先搜索(,简称BFS),是一种遍历图存储结构的一种算法,它既适用于无向图,也适用于有向图。BFS 算法的基本思想是从一个起始顶点开始,依次访问其相邻的未被访问过的顶点,并将它们加入到一个队列中,然后从队列中取出一个顶点作为新的起始顶点,重复上述过程,直到队列为空或者找到目标顶点为止。从一个顶点开始,按层次访问其相邻的顶点,然后再访问下一层的顶点,直到遍历完所有的顶点。使用队列来存储待访问的顶点,保证先进先出的顺序。能够找到最短路径,适用于寻路等问题。原创 2023-03-14 11:29:05 · 1127 阅读 · 0 评论 -
重温数据结构与算法之深度优先搜索
深度优先搜索(DFS)是一种遍历或搜索树或图数据结构的算法。该算法从根节点开始(在图的情况下,选择一些任意的节点作为根节点),并在回溯之前尽可能地沿着每个分支进行探索。需要额外的内存,通常是一个堆栈,来跟踪到目前为止沿着指定分支发现的节点,这有助于回溯。从一个起始节点开始,沿着一条路径不断访问邻接节点,直到没有未访问的邻接节点为止,然后回溯到上一个节点,继续访问其他邻接节点。利用栈或递归来实现。可以产生目标图的相应拓扑排序表。简单易实现。占用空间少。原创 2023-03-08 10:00:24 · 2229 阅读 · 0 评论 -
重温数据结构与算法之约瑟夫问题
约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫环,又称“丢手绢问题”。据说著名犹太历史学家 Josephus 有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。原创 2023-01-29 23:41:24 · 1698 阅读 · 0 评论 -
重温数据结构与算法之并查集
并查集是一种树型的数据结构。它的特点是由子结点找到父亲结点,用于处理一些不交集()的合并及查询问题。Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。摘自 Wiki在计算机科学中,不相交集数据结构(Disjoint Sets),也称为并查集或合并查找集(),是存储不相交(非重叠)集合的数据结构。同样地,它将一个集合的一个分区存储为不相交的子集。它提供添加新集、合并集合(用联合替换它们)和查找集合成员的操作。原创 2022-11-09 22:33:14 · 632 阅读 · 0 评论 -
重温数据结构与算法之单调栈
单调栈(monotonous stack)是指栈的内部从栈底到栈顶满足单调性的栈结构。其实单调栈就是“栈 + 维护单调性”,根据元素依次增大/减小可分为两种递增单调栈:栈中元素从栈底到栈顶依次增大递减单调栈:栈中元素从栈底到栈顶依次减小单调栈通常用来解决这种问题:给出n个数,用 O(n) 的时间求出每个数左/右边第一个比它小/大的数.。原创 2022-10-10 12:14:44 · 846 阅读 · 0 评论 -
重温数据结构与算法之动态规划
摘自 LeetcodeDP 在笔试和面试中经常会遇到,而 DP 最重要有三点:状态定义,初始状态和状态转移方程。下面会通过 Leetcode 上一些题目来练习 DP原创 2022-10-07 13:40:12 · 997 阅读 · 2 评论 -
LeetCode_0010_正则表达式匹配
0010 正则表达式匹配题目链接:https://leetcode-cn.com/problems/regular-expression-matching/给定一个字符串 (s) 和一个字符模式 §。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符。‘*’ 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只...原创 2019-01-25 21:47:39 · 294 阅读 · 0 评论 -
LeetCode_0009_回文数
0009 回文数题目链接:https://leetcode-cn.com/problems/palindrome-number/判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此...原创 2019-01-24 20:44:55 · 205 阅读 · 0 评论 -
LeetCode_0008_字符串转换整数 (atoi)
0008 字符串转换整数 (atoi)题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,...原创 2019-01-23 19:59:33 · 181 阅读 · 0 评论 -
LeetCode_0007_整数反转
0007 整数反转题目链接:https://leetcode-cn.com/problems/reverse-integer/给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的...原创 2019-01-22 20:07:32 · 186 阅读 · 0 评论 -
LeetCode_0006_Z字形变换
0006 Z字形变换题目链接:https://leetcode-cn.com/problems/zigzag-conversion/将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输...原创 2019-01-21 20:32:50 · 201 阅读 · 0 评论 -
LeetCode_0005_最长回文子串
0005 最长回文子串题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad” 输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: ...原创 2019-01-18 22:12:54 · 211 阅读 · 0 评论 -
LeetCode_0004_寻找两个有序数组的中位数
0004 寻找两个有序数组的中位数题目链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:...原创 2019-01-17 22:08:08 · 169 阅读 · 0 评论 -
LeetCode_0003_无重复字符的最长子串
0003 无重复字符的最长子串题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。...原创 2019-01-16 19:40:23 · 156 阅读 · 0 评论 -
LeetCode_0002_两数相加
0002 两数相加题目链接:https://leetcode-cn.com/problems/add-two-numbers/给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例...原创 2019-01-15 21:05:22 · 164 阅读 · 0 评论 -
Leetcode_0001_两数之和
0001 两数之和题目链接:https://leetcode-cn.com/problems/two-sum/给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9...原创 2019-01-15 11:51:39 · 233 阅读 · 0 评论