leetcode contest weekly 351
AtCoder Regular Contest 169
A - Please Sign 某个 \(A_i\) 对 \(A_1\) 的贡献是 \(\binom{10^{100}}{\mathrm{dep}_i}\),所以深度为 \(d\) 的节点的 \(A_i\) 之和只要不为 \(0\),其贡献就一定远大于深度 \(<d\) 的所有点的贡献之和。 从大到 ......
Leetcode刷题day11-栈.滑窗最大值.出现次数前K的元素
239.滑动窗口最大值 239. 滑动窗口最大值 - 力扣(LeetCode) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = ......
[LeetCode Hot 100] LeetCode25. K个一组翻转链表
题目描述 思路: 判断链表中是否足够k个元素 再将这k个元素内部翻转一下 将前后端点连接的指针变化一下 方法一: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next ......
[LeetCode Hot 100] LeetCode148. 排序链表
题目描述 思路一:堆排序、小顶堆 定义一个最小堆 将链表的所有节点放入一个最小堆中 直接用队列弹出的最小值依次覆盖掉原链表的值 方法一: /** * Definition for singly-linked list. * public class ListNode { * int val; * L ......
[LeetCode Hot 100] LeetCode138. 随机链表的复制
题目描述 思路一:添加"小弟" 根据遍历到的原节点创建对应的新节点,每个新创建的节点是在原节点后面。 原节点i的随机指针(如果有的话),指向的是原节点j,那么新节点i的随机指针,指向的是原节点j的next 最后将两个链表分开,再返回新链表就可以 思路二:使用哈希表 首先创建一个哈希表,再遍历原链表, ......
[LeetCode Hot 100] LeetCode24. 两两交换链表中的节点
题目描述 思路: 创建dummy节点,令dummy.next = head。令cur表示当前到达的节点,初始时cur = dummy。每次需要交换cur后面的两个节点。 如果cur的后面没有节点或者只有一个节点,则没有更多的节点需要交换,因此结束交换。否则,获得cur后面的两个节点node1和nod ......
AtCoder Beginner Contest 332 (D)
题目链接 思路: 这就是一个二维的全排列问题 代码: #include<bits/stdc++.h> using namespace std; using ll = long long; #define LNF 0x3f3f3f3f3f3f3f3f #define INF 0x3f3f3f3f #d ......
LeetCode-总入口
LeetCode刷题整理 LeetCode-1-二叉树 LeetCode-2-动态规划 LeetCode-3-二分查找 LeetCode-4-BFS/DFS/回溯 LeetCode-5-双指针 LeetCode-10-位操作 10大排序算法+topK 链表操作 2021秋招-数据结构-栈、队列、数组 ......
AtCoder Regular Contest 169 (ARC169)
怎么有人 ARC A 卡了半天的? A. Please Sign 考虑 \(i\) 位置上的数,下次它被加到 \(P_i\),再下次被加到 \(P_{P_i}\),因为这个序列有性质 \(P_i<i\),这样加若干轮一定会到达 \(1\)。 令所有的 \(i\) 向 \(P_i\) 连边,则这是一棵 ......
[LeetCode19-链表-中等] 删除链表的倒数第N个节点
这道题也是关于链表的题目,题目原意是这样的,给你一个链表,删除这个链表的倒数第n个结点,并返回头结点(也就是其余的结点组成的新链表) 比如 1->3->5->7->9 n =2 也就是删除倒数第2个结点,值为7的结点。返回头结点为 1->3->5->9 ......
AtCoder Beginner Contest 332
AtCoder Beginner Contest 332 A - Online Shopping int main() { IOS; for (_ = 1; _; --_) { cin >> n >> m >> k; ll ans = 0; rep (i, 1, n) { ll a, b; cin ......
2023 CCPC Henan Provincial Collegiate Programming Contest
Preface 徐神在训练前宣称要复习计通网,结果最后还是相当于全程参与了我们的训练 这场我纯纯战犯表现,Easy题E狂挂7发最后发现原来是多测没清空干净,直接红温占用中期1h机时 但好在祁神稳切了一手压轴计算几何,同时最后2h把卡着的题都过完了,最后又靠着题数捧杯(唉还在打弱省省赛找自信) A. ......
AtCoder Beginner Contest 331 G - Collect Them All【概率期望+容斥+多项式】
题目链接:ABC331_G 写在前面 将来如果回顾这道题,建议自己看完题意一定先重新推一遍。如果还是不够熟练,多去做一些同类型的题目吧。 题意: 盒子里有 \(N\) 张卡片,每张卡片上写着一个数字,数字的范围是 \(1,...,M\),写着数字 \(i\) 的卡片有 \(C_i\) 张\((C_i ......
[ LeetCode ] 67. Add Binary
题目 Given two binary strings a and b, return their sum as a binary string. 思考 题外话:根据LeetCode premium的说法,这题是no.4最常被Facebook面试问到的题目 这题是二进制相加的问题 什么是二进制 二进 ......
[LeetCode Hot 100] LeetCode155. 最小栈
题目描述 思路一:使用辅助栈 定义一个[数据栈]来支持push、pop、top操作 定义一个[辅助栈],其栈顶为当前的最小值,以支持常数时间复杂度的getMin操作 思路二:使用ArrayDeque 栈元素中除了保存当前值之外,额外保存当前最小值 使用静态内部类 方法一:对应思路一 class Mi ......
Leetcode刷题day9-栈.队列-栈转队列.队列转栈
232.用栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() ......
2023 (ICPC) Jiangxi Provincial Contest -- Official Contest
Preface 伟大的徐神终于来和我们一起训练了,然后这场中期一眼秒了可做题中最难的G 虽然中间因为我搞错了徐神的意图给徐神原来正确的主席树删了搞了个错的上去浪费了快一个小时 但无所谓最后结束前把所有可做题全写了强势捧杯(打弱省省赛打出自信了属于是) A. Drill Wood to Make Fi ......
[LeetCode Hot 100] LeetCode20. 有效的括号
题目描述 思路: 栈的经典应用。 注意下遇到右括号的代码,即边界情况: // 遇到右括号,则进行括号匹配 if (!stack.isEmpty() && stack.peek() == match(c)) { // 如果匹配则直接弹出栈顶元素 stack.pop(); } else { // 如果不 ......
AtCoder Beginner Contest 331
C - Sum of Numbers Greater Than Me 题意:给定一个长度为n的数组,分别找出比a[i]大的数组里的数的和 思路:用map记录每个数的个数,然后遍历一遍,后面一个项就是数组之和-前面一项-前面的累加 #define int long long using namespa ......
Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331) A - Tomorrow 解题思路: 模拟。 代码: #include <bits/stdc++.h> using namespace s ......
[LeetCode Hot 100] LeetCode295. 数据流的中位数
题目描述 思路:一个大根堆+一个小根堆+保持数量 一个大根堆用来记录数轴左边的数值 一个小根堆用来记录数轴右边的数值 大根堆的容量要么等于小根堆的容量(此时是偶数个有序整数列表),要么大根堆的容量比小根堆的容量大1(此时是奇数个有序整数列表) 如果数量不符合上述条件,则将超过容量的那个堆的堆顶元素插 ......
[LeetCode Hot 100] LeetCode215. 数组中的第K个最大元素
题目描述 思路:小顶堆 维护一个大小为K的小顶堆 遍历所有元素: 如果当前堆中元素个数小于K,则将元素添加到堆中 如果当前堆中元素个数等于K,则判断第K + 1 方法一: class Solution { public int findKthLargest(int[] nums, int k) { ......
LeetCode刷题记录
LeetCode刷题记录 目录LeetCode刷题记录88. 合并两个有序数组题目解题思路代码实现测试用例27. 移除元素题目解题思路代码实现测试用例26.删除有序数组中的重复项题目解题思路代码实现测试用例80. 删除有序数组中的重复项 II题目解题思路代码实现测试用例169. 多数元素题目解题思路 ......
[LeetCode Hot 100] LeetCode347. 前K个高频元素
题目描述 思路:小顶堆 首先遍历整个数组,并是用哈希表记录每个数字出现的次数,并形成一个"出现次数数组"。 找出原数组的前k个高频元素,就相当于找出"出现次数数组"的前K大的值。 建立一个小顶堆,然后遍历"出现次数数组" 如果堆的元素个数小于k,就可以直接插入堆中。 如果堆的元素个数等于k,则检查堆 ......
[LeetCode] 1903. Largest Odd Number in String
You are given a string num, representing a large integer. Return the largest-valued odd integer (as a string) that is a non-empty substring of num, or ......
Leetcode刷题day8-字符串.匹配项下标.重复字符串
KMP内容没看:明天面试完再看!!! https://programmercarl.com/0028.实现strStr.html#思路 28.找出字符串中第一个匹配项的下标 28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode) 给你两个字符串 haystack 和 needle ,请 ......
【LeetCode-中等-链表】两数相加
这是个关于链表的题目, 以前在C#中写代码时,对链表接触比较少,所以刚好接这个题目来更好的熟悉一下链表 题目大概是这样的,给你两个非空的链表,表示两个非负的整数. 它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字 =》 首先我们来理解这句话是什么意思 我们来看一个链表 1->5-> ......
[LeetCode Hot 100] LeetCode2. 两数相加
题目描述 思路:模拟 每次3个数相加:l1链表的值 + l2链表的值 + 进位 如果 l1链表不为空 或者 l2链表不为空 或者 进位不为0 我们就执行循环 那么和存储的是 t % 10 进位就是t / 10 因为题目需要创造一条链表,所以我们创建一个dummy结点的话会方便一点。 方法一: /** ......
LeetCode876. 链表的中间结点
题目描述 思路:快慢指针 快指针一次走两步 慢指针一次走一步 当快指针到达末尾的时候,慢指针所指的就是链表的中点 方法一: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ......
[LeetCode Hot 100] LeetCode86. 分隔链表
题目描述 思路 可以将链表分成两个小链表,一个链表中的元素大小都小于x,另一个链表中的元素都大于等于x,然后再把这两条链表连接到一起,就得到题目想要的结果。 这个题类似于合并两个有序链表:只不过另一个链表只有唯一一个节点x。 合并这两个链表。 方法一: /** * Definition for si ......