
面试题
文章平均质量分 66
天辰尽落
这个作者很懒,什么都没留下…
展开
-
数组之滑动窗口
所谓滑动窗口,。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。那么滑动窗口如何用一个for循环来完成这个操作呢。首先要思考 如果用一个for循环,那么应该表示 滑动窗口的起始位置,还是终止位置。如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?此时难免再次陷入 暴力解法的怪圈。所以 只用一个for循环,那么这个循环的索引,一定是表示 滑动窗口的终止位置。原创 2023-10-07 18:36:14 · 350 阅读 · 0 评论 -
在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。原创 2023-10-04 17:33:00 · 386 阅读 · 0 评论 -
一遍看懂面试算法——二叉树
此时我们用迭代法写出了二叉树的前后中序遍历,大家可以看出前序和中序是完全两种代码风格,并不像递归写法那样代码稍做调整,就可以实现前后中序。这是因为前序遍历中访问节点(遍历节点)和处理节点(将元素放进result数组中)可以同步处理,但是中序就无法做到同步!原创 2023-07-27 09:48:38 · 503 阅读 · 0 评论 -
347. 前 K 个高频元素
首先统计元素出现的频率,这一类的问题可以使用map来进行统计。给定一个非空的整数数组,返回其中出现频率前 k 高的元素。然后是对频率进行排序,这里我们可以使用一种 容器适配器就是。原创 2023-07-26 17:48:35 · 403 阅读 · 0 评论 -
239. 滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。你能在线性时间复杂度内解决此题吗?返回滑动窗口中的最大值。原创 2023-07-26 14:41:09 · 341 阅读 · 0 评论 -
1047. 删除字符串中的所有相邻重复项
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。拿字符串直接作为栈,省去了栈还要转为字符串的操作。会选择两个相邻且相同的字母,并删除它们。给出由小写字母组成的字符串。使用 Deque 作为堆栈。原创 2023-07-26 10:47:21 · 244 阅读 · 0 评论 -
20. 有效的括号
第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。第一种情况,字符串里左方向的括号多余了 ,所以不匹配。第二种情况,括号没有多余,但是 括号的类型没有匹配上。第三种情况,字符串里右方向的括号多余了,所以不匹配。先来分析一下 这里有三种不匹配的情况,原创 2023-07-26 10:30:03 · 297 阅读 · 0 评论 -
18. 四数之和
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。原创 2023-07-24 11:25:24 · 377 阅读 · 0 评论 -
力扣15. 三数之和
给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。[]唯一可能的三元组和不为 0。[[0,0,0]]唯一可能的三元组和为 0。,因为在去重的操作中有很多细节需要注意,在面试中很难直接写出没有bug的代码。原创 2023-07-24 10:36:10 · 99 阅读 · 0 评论 -
四数相加 II
给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组2两个元组如下:1。原创 2023-07-20 16:31:22 · 101 阅读 · 0 评论 -
力扣1. 两数之和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。[1,2][0,1]你可以想出一个时间复杂度小于O(n2)的算法吗?原创 2023-07-20 09:50:08 · 224 阅读 · 0 评论 -
面试题 02.07. 链表相交
给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交题目数据整个链式结构中不存在环。,函数返回结果后,链表必须。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。原创 2023-07-19 15:27:12 · 415 阅读 · 0 评论 -
两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。接下来就是交换相邻两个元素了,这道题目正常模拟就可以了。原创 2023-07-19 11:22:56 · 303 阅读 · 0 评论 -
力扣206. 反转链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。[2,1]head = [][]链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?原创 2023-07-18 16:08:31 · 488 阅读 · 0 评论 -
力扣707设计链表
你可以选择使用单链表或者双链表,设计并实现自己的链表。val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从开始。实现index-1valvalvalindexindexindexindex// 链表变为 1->2->3// 返回 2// 现在,链表变为 1->3// 返回 3getaddAtHeadaddAtTailaddAtIndex2000。原创 2023-07-18 15:37:31 · 309 阅读 · 0 评论 -
移除链表元素
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。原创 2023-07-18 14:18:53 · 99 阅读 · 0 评论 -
螺旋矩阵 II
给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。原创 2023-07-18 11:39:50 · 110 阅读 · 0 评论 -
redis面试题:缓存穿透、雪崩、击穿的原因以及解决方案
类似于上面的例子,虽然数据库中没有id=-3872的用户的数据,但是在redis中对他进行缓存(key=-3872,value=null),这样当请求到达redis的时候就会直接返回一个null的值给客户端,避免了大量无法访问的数据直接打在DB上。当redis中的大量key集体过期,可以理解为redis中的大部分数据都被清空了(失效了),那么这时候如果有大量并发的请求来到,那么redis就无法进行有效的响应(命中率急剧下降),请求就都打到DB上了,到时DB直接崩溃。原创 2023-06-26 09:50:28 · 147 阅读 · 0 评论