- 博客(56)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++ 刷题最强大的工具-代码前缀,极大提升OJ刷题速度
C++ 刷题最强大的工具-代码前缀,极大提升OJ刷题速度本前缀提供了许多常用的函数宏,比如REP代表从1到n开始for循环,RREP代表从n到1开始倒序for循环开启了许多编译器的优化参数(前提是你的编译器是GNU、或兼容gcc/g++的编译器如clang)功能目录开启编译器优化包含万能头文件push_back -> PB等快速宏定义fr 和 fw:文件读和写REP和RREP:1到n快速遍历complete_unique:调用STL快速删除vector中的重复元素mst 快速设置
2020-11-26 13:39:49
914
3
原创 微软校园大使喊你来秋招啦!
正式推文https//mp.weixin.qq.com/s/xVcUSUdsKprCVf6xHor-Rg。去微软招聘网站投递简历https//careers.microsoft.com/us/en。校招指南https//docs.qq.com/doc/DVWNrZkxwdEl2cE13。发送你的姓名+投递使用的邮箱到axccjqh@qq.com(我的邮箱)早投早笔试一共四次笔试机会取最高分作为进入面试参考!我们诚挚地欢迎所有优秀且心怀热忱的23届毕业生!内推投递成功后会有邮件通知!...
2022-08-01 20:59:34
371
1
原创 [C++&Rust]LeetCode No.877 石子游戏(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc877题目亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回&nb
2021-06-16 20:11:19
312
原创 LeetCode No.278 & 374 & 852 二分查找专题
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc278-374-852写在前面二分查找是一个非常基础的算法。但是完全掌握却并不容易。首先再次介绍一下二分查找。大家开始学习二分的时候,总是伴随着一个万年不变的场景:有序数组(假设是升序)。核心思路就是判断num[mid]。但是大家一开始学的都会有三种情况。num[mid] > target,就表示要找的数字一定位于mid左边,所以我们将右边界限制到mid-1,也就是right = mid -
2021-06-15 15:10:48
281
原创 [C++&Rust]LeetCode No.518 零钱兑换 II(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc518题目给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入: amount = 3, coins = [2]输
2021-06-10 20:24:44
229
原创 [C++&Rust]LeetCode No.1049 最后一块石头的重量 II(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc1049题目有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为
2021-06-08 11:44:47
717
原创 [C++&Rust]LeetCode No.203 移除链表元素(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc203题目给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val
2021-06-05 22:26:14
162
原创 第十一届蓝桥杯 C/C++ 大学A组/研究生组 E题 咫尺天涯dp做法
题目:计算出的答案为:23769050146281024以下为C++代码#include <bits/stdc++.h>using namespace std;#define POW2(X) (1 << (X))#define CKBIT(S, X) (((S)&POW2(X)) != 0)const double pi = acos(-1.0);const double eps =
2021-06-04 16:04:07
577
原创 [C++]LeetCode No.160 相交链表(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc160题目给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB
2021-06-04 11:31:57
145
原创 [C++&Rust]LeetCode No.525 连续数组(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc525题目给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。 提
2021-06-03 10:53:47
149
原创 [C++&Rust]LeetCode No.523 连续的子数组和(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc523题目给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组: 子数组大小 至少为 2 ,且 子数组元素总和为 k 的倍数。如果存在,返回 true ;否则返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。 示例 1:输入:nums = [23,2,4,6
2021-06-02 21:26:29
394
原创 [C++&Rust]LeetCode No.342 4的幂(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc342题目给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x 示例 1:输入:n = 16输出:true示例 2:输入:n = 5输出:false示例 3:输入:n = 1输出:true 提示: -231 <= n <=
2021-05-31 10:57:59
183
原创 [C++&Rust]LeetCode No.477 汉明距离总和(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc477题目两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间汉明距离的总和。 示例 1:输入:nums = [4,14,2]输出:6解释:在二进制表示中,4 表示为 0100 ,14 表示为 1110 ,2表示为 0010 。(这样表示是为了体现后四位之间关系)所以答案为:HammingDi
2021-05-29 21:08:30
153
原创 LeetCode No.461 汉明距离(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc461题目两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。思路分析通过观察可以得出,给入两个数字
2021-05-27 08:50:07
128
原创 [C++&Rust]No.1190 反转每对括号间的子串
原帖地址:http://blog.leanote.com/post/dawnmagnet/lc1190题目给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。 示例 1:输入:s = "(abcd)"输出:"dcba"示例 2:输入:s = "(u(love)i)"输出:"iloveu"示例 3:输入:s = "(ed(et(oc))el)"输出
2021-05-26 11:21:01
172
原创 [C++&Rust]LeetCode No.664 奇怪的打印机(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/CCF题目有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。示例 1:输入:s = "aaabbb"输出:2解释:首先打印 "aaa" 然后打印 "bbb"。示例 2:输入:s = "aba"输出:2解释:首先打印 "aa
2021-05-24 15:01:43
216
原创 [C++&Rust]LeetCode No.1035 不相交的线(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc1035题目在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。示例 1:
2021-05-21 10:11:35
218
原创 第十二届蓝桥杯 异或数列 dfs+剪枝+位运算
没法dp,因为数组开得太大了220∗220∗2100000的空间,没法dp2^{20}*2^{20}*2^{100000}的空间,没法dp220∗220∗2100000的空间,没法dp只能dfs剪枝目前输入数组的长度最大是1000,否则会超时extern crate rand;use rand::{thread_rng, Rng};pub fn dfs(a: i32, b: i32, arr: &[i32], remain: i32) -> i32 { let mut
2021-05-20 20:23:25
1248
原创 [C++&Rust]LeetCode No.692 前K个高频单词(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc692题目给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字
2021-05-20 09:00:58
218
原创 [C++&Rust]LeetCode No.1738 找出第K大的异或坐标值(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/lc1738题目给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。矩阵中坐标 (a, b) 的 值 可由对所有满足 0 <= i <= a < m 且 0 <= j <= b < n 的元素 matrix[i][j](下标从 0 开始计数)执行异或运算得到。请你找出 matrix 的所有坐标中第 k 大的值(k 的值从 1 开始计数)。
2021-05-19 17:30:20
141
原创 [C++&Rust]LeetCode No.1442 形成两个异或相等数组的三元组数目
原贴地址:http://blog.leanote.com/post/dawnmagnet/74b9cba6cc8a题目思路分析又是一道异或的题目。我们再强调一下,异或的最重要的性质就是两个相同的数字异或是0接下来看一下我们的这个数据量,不太适合暴力,如果按照题目的说法对(i, j, k)三元组进行遍历,复杂度就是O(n3)O(n^3)O(n3),达到了3003=27000000300^3=270000003003=27000000复杂度,这种已经很大了,很危险,很有可能过不了。这也是对于所有题目
2021-05-18 11:19:10
132
原创 [C++&Rust]LeetCode No.993 二叉树的堂兄弟节点
题目思路分析堂兄节点存在一些基本的条件深度相同父节点不同我们只需要获得了题目中给入的两个节点的深度信息和父亲信息,我们就可以判断它是不是堂兄节点。获得深度信息,我们得遍历一整遍二叉树,获取两个节点的该信息就得获取两遍整棵二叉树。那么有一种办法只需要遍历一遍即可,就是BFS,广度优先搜索。为什么说遍历一次即可获得答案呢,因为题目中给入的两个节点有可能有两种情况,即是否在同一个深度,如果在同一个深度,就有可能是堂兄节点,如果不在同一个深度,一定不可能是堂兄节点。而我们知道,BFS对于树的遍
2021-05-17 23:21:18
151
原创 [C++&Rust]LeetCode No.12 整数转罗马数字(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/d23f1485c8a4题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列
2021-05-14 19:42:50
165
原创 [C++&Rust]LeetCode No.1269 停在原地的方案数(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/No.1269-停在原地的方案数题目有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。由于答案可能会很大,请返回方案数 模 10^9 + 7 后的结果。示例 1:输入
2021-05-13 09:37:52
167
原创 [C++&Rust]LeetCode No.1310 子数组异或查询(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/0bb52ca14c01题目有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。示例 1:输入:arr = [1,3,4,
2021-05-12 01:00:56
214
原创 [C++&Rust]LeetCode No.1734 解码异或后的排列(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/fda5818930ff题目给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。给你 encoded 数组,请你返回原始数组 perm 。题目保证答案存
2021-05-11 11:01:01
145
原创 [C++&Rust]LeetCode No.872 叶子相似的树(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/e25aa1655474题目思路分析这个都没什么思路可以分析的,怎么获取从左到右的叶子节点,只有一种办法,就是中序遍历,在遍历的过程中判断节点是否叶子节点,存进一个数组即可。对于两棵树,分别进行上述操作,获得两个叶子节点的数组,对比即可获得答案。时间已经是最优的了,因为每个节点至少得访问一遍。也无需考虑空间占用率过大的问题,因为原本的遍历节点也是O(节点数目)复杂度的,所以我们这样操作不会使用很多的空间。
2021-05-10 14:33:01
123
原创 [C++&Rust]LeetCode No.1486 数组异或操作(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/c8deab0f58d7题目思路分析这个题目就算我们暴力做,也只是O(n)的复杂度,而且题目的数据给的也不是很大,暴力一定非常快。(窃喜于是我们暴力做了一下,很快啊,就出来了,直接就AC了,还只用了0ms。impl Solution { pub fn xor_operation(n: i32, mut start: i32) -> i32 { let mut res = 0;
2021-05-07 19:29:34
207
原创 [C++&Rust]LeetCode No.1720 解码异或后的数组(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/e62245065eaa题目思路分析这个题目要求我们对二进制的基本操作有一些理解和概念。二进制中非常重要的一个概念就是异或。异或是一个二进制操作,原理也非常简单,是一个两输入一输出的门电路,00出0,11出0,其他都出1,所以说,加入我们有一个数字target,让它两次异或同一个数字,结果还是target,因为11出0,就抵消了这个数字对每一位造成的影响。在获得了这个背景小知识后,我们就非常简单了。解码无
2021-05-06 08:39:02
135
原创 [C++&Rust]LeetCode No.740 删除并获得点数(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/b50143d626a8题目思路分析这个题一看还是一个dp,本月是dp月实锤了???还是那句老话,但凡是看起来模拟能做的都往dp的方向考虑考虑。在本题中,可以看出,选了nums[i]就不能选加一和减一了,这是最关键的约束条件,我们的dp也应该由此展开。所以我们统计一下每个数字出现的次数(存放在cal中)。dp的时候自然就是对nums[i]从前向后dp。一共取值范围是10000,也不大。dp的时候我们有个
2021-05-05 12:35:00
125
原创 [C++&&Rust]LeetCode No.1473 粉刷房子 III(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/61cf7456274e题目思路分析这道题总的来说值得上困难题。一开始看,一眼就看出是个dp,因为首先房子的数量太多,如果使用模拟(dfs)必定超时,而我之前说过,但凡是可以用dfs的地方就可以试试dp。在这个问题中,给入了三个关键变量,m,n,target,这三个一看就是有大用处的(此处暗示三维dp),那么为什么使用三维dp而不是大家很好想到的二维dp呢,原因很简单,我们得在dp的系数上表示出遍历到了哪一个
2021-05-04 23:22:27
144
原创 [C++&Rust] No.7 整数反转(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/7思路分析五一也要继续营业呀!整数反转,就是取出来一位再乘上一位呀!我们把两个整数(输入整数和答案)想象成两个栈,从输入出栈,向答案入栈,就能得到最终的答案了。出栈的方法就是先对10 mod获得出栈元素,再除10出栈。假设输入是123456712345 -> %10 = 5 -> /10 = 1234(出栈成功)76 -> *10 = 760 -> +5 = 765(入栈成功)
2021-05-03 09:56:38
144
原创 [C++&Rust]LeetCode No.137 只出现一次的数字 II(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/bb6f3d567c46题目思路分析对于这种可以简单操作的题目,我的建议是在学习的时候一定要参透最难的做法,在真正发挥的时候就怎么熟练怎么来。因为最难的做法是很难想到的,而我们要训练的就是解决问题的能力。如果我们止步于简单的做法,我们的进步就非常缓慢了。简单的做法非常简单,统计即可,时间和空间都是O(n),就相当于拿一个哈希表遍历统计一下即可。那么这种写法实在是太简单了,我们就来参透一下困难的做法。也就是满
2021-04-30 11:03:30
144
原创 [Rust&C++]No.403 青蛙过河(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/403题目思路分析这道题目是一个典型的游戏题,游戏一般来说做法就是(大家比较容易想到的)就是模拟,而我们来看一下这个题目,是模拟青蛙跳。主要的约束条件就是上一步和下一步的步长绝对值之间只能差1。很容易想到可以使用dfs做,那么我们来分析一下这个dfs需要使用几个参数。比较容易想到的是两个参数:一个是上一步跳了k的长度,一个是上一步跳到的位置。这个是比较好想的。但是对于这个题目,我们如果单纯的使用dfs一定会
2021-04-29 23:59:56
302
原创 [C++&Rust]LeetCode No.633 平方数之和(每日一题)
原帖地址:http://blog.leanote.com/post/dawnmagnet/633题目思路分析这个就是一个非常简单的枚举。。。。其实也不需要什么思路的,大家会问,可能会有更简单的办法吗?我觉得很难,毕竟这道题究其核心是一个质因数分解的题目,而质因数分解目前都是数学上的一座坚不可摧的大坝,只要有人推翻了(还是别有的好),那么整个互联网体系的密码学都是建立在以之为基础的加密算法上的,那么整个互联网也将崩塌。。。。。。。。所以我们回到这个题目,就模拟呗。注意一下模拟的上限就到c\sqrt{c
2021-04-28 09:29:26
145
原创 [C++&Rust]LeetCode No.938 二叉搜索树的范围和(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/938题目给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23来源:力扣(LeetCode)
2021-04-27 15:16:08
95
原创 [C++&Rust]LeetCode No.1011 在 D 天内送达包裹的能力(每日一题)
原贴地址:http://blog.leanote.com/post/dawnmagnet/1011题目传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。提示:1 <= D <= weights.length <= 500001 <= weights[i]
2021-04-26 23:02:17
140
原创 [C++&Rust]LeetCode No.368 最大整除子集
原贴地址:http://leanote.com/blog/post/6082bc6fab64410dd50008ec题目给你一个由 无重复 正整数组成的集合 nums,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:answer[i] % answer[j] == 0 ,或answer[j] % answer[i] == 0如果存在多个有效解子集,返回其中任何一个均可。来源:力扣(LeetCode)链接:https
2021-04-23 21:09:15
144
原创 [C++&Rust]LeetCode No.363 矩形区域不超过 K 的最大数值和
原贴地址:http://blog.leanote.com/post/dawnmagnet/363题目给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。示例 1:输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。
2021-04-22 10:46:48
226
原创 [C++&Rust]LeetCode No.91 解码方法
原贴地址:http://blog.leanote.com/post/dawnmagnet/No.91-解码方法题目一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1'B' -> 2...'Z' -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1-1-10-6)“KJF” ,将消息分组为 (11-10-6)注意,消息不能分组为 (
2021-04-21 09:35:13
200
AndroidSdk_macos_M1_aarch64_arm64_api30.zip
2021-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人