链表
tomjobs
别慌,慌也没用
展开
-
LeetCode 148. 排序链表(归并)
题意:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。思路:很巧妙的一道题,想到归并就好做了。class Solution {public: ListNode* mergeList(ListNode* l1, ListNode* l2) { ListNode* head = new ListNode(0); ListNode* node = head; while(l1 && l2) {原创 2021-08-21 01:50:36 · 148 阅读 · 0 评论 -
LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复(链表,哈希套哈希)
思路:这道题:“LeetCode380. 常数时间插入、删除和获取随机元素”的加强版。同样的用vectorvectorvector加哈希记录每个值的位置。因为可能出现重复的元素,所以我们用哈希套哈希,来记录这个值对应所有出现的位置。class RandomizedCollection {private: vector<int>vec; unordered_map<int,unordered_map<int,int>>vec_table;publ.原创 2021-02-24 22:46:12 · 157 阅读 · 0 评论 -
LeetCode 460. LFU 缓存(链表+哈希)
思路:链表+哈希,类似LRU的构造。代码参考自leetcode官方题解。struct Node { int key,val,freq; Node(int _key,int _val,int _freq):key(_key),val(_val),freq(_freq){}};class LFUCache {public: LFUCache(int capacity) { minfreq = 0; cap = capacity; .原创 2021-02-24 20:45:13 · 152 阅读 · 0 评论 -
LeetCode 146. LRU 缓存机制(链表+哈希)
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久原创 2021-02-02 18:28:34 · 222 阅读 · 0 评论 -
LeetCode 25. K 个一组翻转链表(递归,迭代)
思路:每kkk个进行一次链表反转(这个可以递归解决),然后将反转后链表的头结点连接到后面的节点。同时利用快慢指针,保证快指针比慢指针多kkk个节点,用以辅助翻转操作。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x).原创 2021-01-18 22:43:58 · 203 阅读 · 0 评论 -
LeetCode 206. 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class原创 2021-01-18 19:01:36 · 165 阅读 · 0 评论 -
LeetCode 24. 两两交换链表中的节点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.原创 2021-01-18 18:01:52 · 113 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.原创 2021-01-18 15:15:44 · 91 阅读 · 0 评论 -
Codeforces1443 F. Identify the Operations(链表)
We start with a permutation ????1,????2,…,???????? and with an empty array ????. We apply the following operation ???? times.On the ????-th iteration, we select an index ???????? (1≤????????≤????−????+1), remove ???????????? from the array, and append one原创 2020-11-07 00:40:54 · 183 阅读 · 0 评论 -
双向链表(指针写法,数组写法)
改了个链表需求。。。所以就贴上来了#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <map>using namespace std;const int INF = 0x3f3f3f3f;map<int,int>mp;struct Node { int原创 2020-10-02 23:56:46 · 322 阅读 · 0 评论 -
牛客多校第三场 G. Operating on a Graph(并查集,链表)
题意:有n个group,每个group都初始只有一个点m次询问,每次询问给出一个group,则这个group里面点所连的点连在这个group上。问最后每个点属于哪个group思路:一个点通过邻接边连接其他点称为发挥作用,则每个点最多只会发挥一次作用,所以只需要维护每个group里面还有多少没有发挥作用的点即可。维护group可以用并查集,维护多少没发挥作用点可以用链表合并。#include <cstdio>#include <cstring>#include &l.原创 2020-07-20 10:56:52 · 256 阅读 · 0 评论 -
A - Rearranging a Sequence CSU - 2291(中南多校第四场,构造)
You are given an ordered sequence of integers, (1, 2, 3, . . . , n). Then, a number of requests will be given. Each request specifies an integer in the sequence. You need to move the specified integer...原创 2019-04-02 17:39:29 · 331 阅读 · 0 评论 -
2019湖南省赛 双向链表练习题
双向链表练习题Bobo 有 nnn 个列表 L1,L2,…,LnL_1, L_2, \dots, L_nL1,L2,…,Ln. 初始时,LiL_iLi 仅包含元素 iii, 即 Li=[i]L_i = [i]Li=[i]. 他依次执行了 mmm 次操作。第 iii 次操作由两个整数 ai,bia_i, b_iai,bi 指定, 每次操作分为两步:Lai←reverse(Lai+L...原创 2020-03-03 21:47:35 · 419 阅读 · 0 评论 -
AcWing 106. 动态中位数(链表,对顶堆)
依次读入一个整数序列,每当已经读入的整数个数为奇数时,输出已读入的整数构成的序列的中位数。输入格式第一行输入一个整数P,代表后面数据集的个数,接下来若干行输入各个数据集。每个数据集的第一行首先输入一个代表数据集的编号的整数。然后输入一个整数M,代表数据集中包含数据的个数,M一定为奇数,数据之间用空格隔开。数据集的剩余行由数据集的数据构成,每行包含10个数据,最后一行数据量可能少于10个,...原创 2020-02-25 11:12:33 · 275 阅读 · 0 评论 -
Boxes in a Line UVA - 12657(链表)
You have n boxes in a line on the table numbered 1 . . . n from left to right. Your task is to simulate 4kinds of commands:• 1 X Y : move box X to the left to Y (ignore this if X is already the left...原创 2020-02-21 23:59:21 · 149 阅读 · 0 评论 -
BZOJ1588. [HNOI2002]营业额统计(set寻找前驱后继,双向链表)
Description营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营...原创 2019-10-07 02:14:11 · 266 阅读 · 0 评论