刷题
文章平均质量分 67
玛卡巴卡哒哒
清醒 自律 知进退 明得失
展开
-
排序:归并排序和快速排序
力扣leetcode912.排序数组,可以用来练习排序算法题目给你一个整数数组nums,请你将该数组升序排列。归并和快排都运用了递归和分治的思想。归并二叉树的后续遍历;快排二叉树的前序遍历。为什莫这么说呢?先对左右数组进行排序,再合并。先构造分界点,然后去左右子树组构造分界点。...原创 2022-07-25 16:05:04 · 174 阅读 · 0 评论 -
【力扣刷题】460.LFU缓存——哈希表+LinkedHashSet
然后其实get和set代码有重复的,比如可以将key从freq移动到freq+1对应的映射链表上封装起来,然后调用,会使代码好看一点。①get(key)方法会去缓存中查询键key,如果key已存在,则返回key对应的val值,不存在则返回-1。intget(intkey)-如果键key存在于缓存中,则获取键的值,否则返回-1。5.希望快速删除key列表中的任何一个key,如果频次为freq的某个key被访问,那么。从freq对应的key列表删除,加入到freq+1对应的key的列表中。...原创 2022-07-21 19:46:35 · 364 阅读 · 0 评论 -
【力扣刷题】146.LRU缓存——哈希表+双向链表
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键原创 2022-07-12 11:11:52 · 434 阅读 · 0 评论 -
【力扣刷题】一维动态规划记录(53零钱兑换、300最长递增子序列、53最大子数组和)
【力扣刷题】一维动态规划记录(53零钱兑换、300最长递增子序列、53最大子数组和)。题目二、题目三属于同一类动态规划问题。原创 2022-07-03 13:03:02 · 299 阅读 · 0 评论 -
【力扣刷题】32. 最长有效括号
给你一个只包含 和 的字符串,找出最长有效(格式正确且连续)括号子串的长度。利用栈,学过利用栈来判断一个只包含'('和')'的字符串是否是括号匹配的,那个题目解题就是,遍历整个字符串,是左括号就入栈,是右括号则①判断栈是否有左括号且弹出一个左括号,②如果栈为空则为false,如果所有字符都遍历完了,栈中还有元素则为false,否则为true。利用这个思路,增加一个标记数组arr,初始化所有元素为1,栈中存的是数组下标(字符索引)。遍历整个字符串,如果是左括号则把索引下标(i)加入栈,如果是右括号则判断栈原创 2022-07-02 11:05:36 · 740 阅读 · 0 评论 -
【力扣刷题】15.三数之和(双指针);17.电话号码的字母组合(递归回溯)
15.三数之和(双指针);17.电话号码的字母组合(递归回溯)给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。.........原创 2022-06-27 11:04:43 · 301 阅读 · 1 评论 -
【力扣刷题】二分查找:4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/median-of-two-sorted-arrays题目难度主要是在时间复杂度上面,O(log(m+n)),我一开始是用的双指针来实现的,两个指针分别指向两个数组的初始位置,因为两个数组都是已知且有序的,则长度也已知,所以只需要找到中点原创 2022-06-26 14:12:14 · 491 阅读 · 0 评论 -
【力扣刷题】单调栈:84. 柱状图中最大的矩形
题目:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 //单调递增栈,对于栈中的柱体来说,左边第一个高度小于自身的柱体就在自己下方//遍历每个柱体,若当前的柱体高度大于等于栈顶柱体的,就入栈//否则就是找到了栈顶元素的右边的第一个小于自身的柱体,出栈栈顶元素,同时可以计算栈顶元素的对应的矩形的最大面积了//给数组最后一个元素添加一个0,用这个条件来让栈里面所有元素都出栈//左边特殊处理的话,如果某个栈顶元素出栈后栈为空,原创 2022-06-23 09:51:45 · 165 阅读 · 0 评论 -
【力扣刷题】11.盛最多水的容器//42.接雨水
题目:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/container-with-most-water 我一看到这个题目脑子里首先想的是应该是用单调栈来解决吧:因为想的是求最大的话,找到两根线,利用单调递原创 2022-06-21 11:27:13 · 254 阅读 · 0 评论