数据结构
黑化草莓熊
交叉学科研究生,机械、仪器、化工、医疗、软件开发,日常分享
展开
-
剑指 Offer 59 || 力扣239. 滑动窗口最大值 动画题解(刷题笔记)
给你一个整数数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。方法一:单调队列在示例中,我们从数组中第一个元素开始遍历,由于窗口的大小是3,因此当遍历到第三个元素时,窗口就形成了。我们以数组{5, 3, 4, 1},窗口大小k=3来进行说明。这里我们规定窗口右侧边界为right,左侧边界为left,其值为元素下标。然后,开始遍历nums = {5,...原创 2022-03-11 19:47:42 · 184 阅读 · 0 评论 -
力扣138 剑指 Offer 35. 复杂链表的复制(刷题笔记)
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。方法一:哈希表 分析:复制一个链表是容易的,复杂链表的难点在于多了一个random指针,指向链表中的任意节点或者null。这个 random 指针意味着在复制过程中,除了构建前驱节点和当前节点的引用指向 pre.next ,还要构建前驱节点和其随机节点的引用指向 pre.random...原创 2022-03-11 13:56:25 · 1120 阅读 · 0 评论 -
力扣 155. 最小栈||剑指 Offer 30. 包含 min 函数的栈(刷题笔记)
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)class MinStack {public: stack<int> stk,stk_min; MinStack() {} void push(int val) { if(stk.empty()){ //stk空,那么stk_min一定还没有值输入 .原创 2022-03-11 11:55:38 · 334 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列(刷题笔记)
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )首先解释一下示例:第一行: ["CQueue","appendTail","deleteHead","deleteHead"] 表示操作CQueue 构造队列 appendTail 队尾入队 deleteHead 队头出队第二行: [[],[3],[],[]] 表示入队的数原创 2022-03-10 14:30:19 · 86 阅读 · 0 评论 -
力扣206||剑指 Offer 24 . 反转链表反转链表(刷题笔记||C++阿里实习面试题)
双指针法(好理解):pre和 cur;pre在前 cur在后。 每次让 pre的 next指向 cur,实现一次局部反转局部反转完成之后 pre和 cur同时往前移动一个位置 循环上述过程,直至 pre到达链表尾部pre->next = cur; cur = pre;纠正绿色第三行class Solution {public: ListNode* reverseList(ListNode* head) { L...原创 2021-11-18 19:11:03 · 757 阅读 · 0 评论 -
栈和堆的区别
数据结构:栈和堆的区别原创 2021-11-18 12:35:49 · 106 阅读 · 0 评论