数据结构与算法
文章平均质量分 64
数据结构与算法是编程的基础,很多问题都可以借鉴数据结构的设计思想和算法高效解决。
三水写代码
你只管努力变得优秀······
展开
-
力扣39:组合总和
给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...转载 2021-05-28 20:30:27 · 178 阅读 · 0 评论 -
力扣1190:反转每对括号间的子串
题目描述:给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意: 结果中 不应 包含任何括号。示例:示例 1:输入:s = "(abcd)"输出:"dcba"示例 2:输入:s = "(ed(et(oc))el)"输出:"leetcode"示例 3:输入:s = "a(bcdefghijkl(mno)p)q"输出:"apmnolkjihgfedcbq"题解:...转载 2021-05-26 20:37:42 · 320 阅读 · 0 评论 -
力扣:735 使用标记跳转简化代码 A:{ while/for ..... break A }
行星碰撞问题题目描述:给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。下面是题目给出的示例: 注意示例4,有助于搞清楚题目意思,我刚开始做的时候就弄错了题目含义这个题目倒不是有..原创 2021-05-13 20:01:17 · 174 阅读 · 0 评论 -
力扣456: 132模式(单调栈)
给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。进阶:很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn) 或 O(n) 的解决方案吗?方法..转载 2021-05-06 20:15:17 · 293 阅读 · 0 评论 -
链表的插入排序
题目要求:给你链表的头结点head,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?题目分析:要求使用插入排序的方法对链表进行排序,插入排序的时间复杂度是 O(n^2)O(n2),其中 nn 是链表的长度。这道题考虑时间复杂度更低的排序算法。题目的进阶问题要求达到 O(nlogn) 的时间复杂度和 O(1) 的空间复杂度,时间复杂度是 O(nlogn) 的排序算法包括归并排序、堆排序和...转载 2021-03-18 20:36:42 · 749 阅读 · 0 评论 -
贪心算法---重新排列后的最大子矩阵
题目描述:给你一个二进制矩阵matrix,它的大小为m x n,你可以将 matrix中的 列按任意顺序重新排列。请你返回最优方案下将 matrix重新排列后,全是 1的子矩阵面积。示例 1:输入:matrix = [[0,0,1],[1,1,1],[1,0,1]] 输出:4 解释:你可以按照上图方式重新排列矩阵的每一列。 最大的全 1 子矩阵是上图中加粗的部分,面积为 4 。 示例 2:输入:matrix = [[...转载 2021-02-24 11:32:06 · 389 阅读 · 0 评论 -
贪心算法
转载自力扣:https://leetcode-cn.com/problems/minimum-deletions-to-make-character-frequencies-unique/solution/tan-xin-si-xiang-tong-ji-qu-zhong-bu-xu-yao-pai-xu/如果字符串 s 中 不存在 两个不同字符 频次 相同的情况,就称 s 是 优质字符串 。给你一个字符串 s,返回使 s 成为 优质字符串 需要删除的 最小 字符数。字符串中字符的 频次 是该.转载 2021-02-18 16:57:56 · 229 阅读 · 1 评论 -
力扣——扁平化多级双向链表(深度优先算法)
题目描述:多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。题解:方法一:递归的深度优先搜素我们可能会疑问什么情况下会使用这样的数据结构。其中一个场景就是 git 分支的简化版本。通过扁平化多级列表,可以认为将所有 git 的分支合并在一起。首先,为了清楚扁..转载 2020-08-29 15:11:36 · 607 阅读 · 0 评论