冷意
冷意
全部文章
分类
归档
标签
去牛客网
登录
/
注册
冷意的博客
全部文章
(共170篇)
题解 | 数组中出现次数超过一半的数字
1、解题思路摩尔投票法:假设第一个数字为候选数字,计数器初始化为1。遍历数组,如果当前数字与候选数字相同,计数器加1;否则计数器减1。如果计数器减到0,更换候选数字为当前数字,并将计数器重置为1。最后剩下的候选数字即为所求。时间复杂度:O(n),空间复杂度:O(1)。哈希表法:使用哈希表统计每个数字...
2025-06-27
0
38
题解 | 两数之和
1、解题思路哈希表法:使用哈希表存储每个数字及其对应的下标。遍历数组,对于每个数字 num,检查 target - num 是否存在于哈希表中。如果存在,返回这两个数的下标。时间复杂度:O(n),空间复杂度:O(n)。排序与双指针法:先将数组排序,然后使用双指针从两端向中间遍历。如果两数之和等于 t...
2025-06-27
0
53
题解 | 表达式求值
1、解题思路栈的应用: 使用两个栈:nums 栈存储数字,ops 栈存储运算符和括号。遵循以下规则: 遇到数字时,提取完整的数字并压入 nums 栈。遇到左括号时,压入 ops 栈。遇到右括号时,弹出 ops 栈直到遇到左括号,计算括号内的表达式。遇到运算符时,根据优先级决定是否先计算栈中的部分表达...
2025-06-27
0
25
题解 | 数据流中的中位数
1、解题思路直接排序法: 每次调用 Insert() 方法时,将数值插入数组并保持数组有序。调用 GetMedian() 时,根据数组长度直接计算中位数。时间复杂度: 插入时间复杂度:O(n)(因为插入排序需要移动元素)。获取中位数时间复杂度:O(1)。空间复杂度:O(n)。堆(优先队列)优化: 使...
2025-06-27
0
33
题解 | 寻找第K大
1、解题思路排序法:直接对整个数组进行排序,然后取第 (n - k) 个元素(假设数组是升序排序)。时间复杂度为 O(nlogn),空间复杂度为 O(1)(如果使用的是原地排序算法,如堆排序或快速排序)。快速选择(Quickselect):类似于快速排序的分区思想,可以在平均 O(n) 时间内找到第...
2025-06-27
0
23
题解 | 最小的K个数
1、解题思路排序法:直接对整个数组排序,然后取前 k 个元素。时间复杂度为 O(nlogn),不满足题目要求的 O(nlogk)。堆(优先队列):使用一个大根堆来维护当前最小的 k 个元素。遍历数组,将每个元素与堆顶(当前堆中的最大值)比较: 如果堆的大小小于 k,直接加入堆。如果当前元素小于堆顶,...
2025-06-27
0
35
题解 | 滑动窗口的最大值
1、解题思路暴力法:对于每个窗口,遍历窗口内的所有元素找出最大值。时间复杂度为 O(n*k),其中 n 是数组长度,k 是窗口大小。这会超出时间限制。双端队列优化 :使用一个双端队列(deque)来存储当前窗口中的可能成为最大值的元素索引。维护队列的单调性:队列中的元素索引对应数组中的值从大到小排列...
2025-06-27
0
29
题解 | 有效括号序列
1、解题思路栈的应用: 遍历字符串,遇到左括号 '(', '{', '[' 时,压入栈。遇到右括号 ')' , '}' , ']' 时,检查栈顶是否为对应的左括号: 如果是,弹出栈顶。如果不是,返回 false。遍历结束后,如果栈为空,返回 true;否则返回 false。边界条件: 空字符串视为合...
2025-06-27
0
33
题解 | 包含min函数的栈
1、解题思路普通栈:直接使用一个栈来存储所有元素,但 min 操作需要遍历所有元素,时间复杂度为 O(n),不符合题目要求。辅助栈:使用一个辅助栈来同步存储当前栈中的最小值。每次 push 操作时,辅助栈压入当前最小值;每次 pop 操作时,辅助栈同步弹出。这样 min 操作只需返回辅助栈的栈顶元素...
2025-06-27
0
25
题解 | 用两个栈实现队列
1、解题思路栈的特性:后进先出(LIFO)。队列的特性:先进先出(FIFO)。双栈实现队列 :Push 操作:直接压入 stack1。Pop 操作 :如果 stack2 为空,则将 stack1 中的所有元素依次弹出并压入 stack2,此时 stack2 的栈顶元素即为队列的头部元素。如果 sta...
2025-06-27
0
46
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页