
每日一题
文章平均质量分 62
spcodhu
python/java小萌新
展开
-
使用优先队列priority_queue实现对基unordered_map于value值的数值筛选
堆分为大顶堆和小顶堆,大顶堆就是将队列里面最大的元素放在队首,而小顶堆就是将队列里面最小的元素放在队首。堆的声明默认是一个大顶堆,我们可以很轻易的拿到队列当作最大的元素。其中的decltype函数是自动类型推断,可以将pair等比较复杂的数据类型识别出来,但是要传入比较函数的地址。我们利用小顶堆不断的取出unordered_map里面的小元素,这样算是一层筛选,对于中等题,基本就可以过了。至于队列的顺序,堆只是将最值放在队首,并不会对队列严格排序;所以要使用堆、也就是优先队列。...原创 2022-07-19 00:37:37 · 357 阅读 · 0 评论 -
大模拟~大模拟,模拟题究竟怎么写才好
关于模拟题的解题技巧原创 2022-06-14 20:23:05 · 1213 阅读 · 0 评论 -
模拟除法详解
模拟除法:指的是超过了int,用除法运算符不能解决,但又没达到大数相除的范围的除法。这类除法一般商用string存起来。即:除数和商可以用long long存,被除数用string存。这类题目很有可能以乘法的形式给出,需要求一个超过了long long 范围的积,但恰好因数有办法得到。在一般的比赛中,模拟除法比大数相除应用的还要广泛。具体算法:模拟竖式:我们想要得到最高位的商,并将被除数缩小,/ 运算符和 % 可以组合使用//模拟除法的关键ans += (a / b + ' 0'原创 2022-05-07 10:25:49 · 950 阅读 · 0 评论 -
移位运算符解子集问题--用移位运算符转十进制为二进制
想直接看十进制转二进制的同学可以跳转:目录p.用移位运算符转十进制为二进制子集是一个数学概念:如果集合A的任意一个元素都是集合B的元素,那么集合A称为集合B的子集。 --百度百科现在给你一个数组,按任意顺序输出这个数组的子集(空集也...原创 2022-05-02 19:53:16 · 325 阅读 · 0 评论 -
LEETCODE题目--79.单词搜索 --- dfs回溯剪枝
题目链接79. 单词搜索 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/word-search/这题按理来说就是一个简单的DFS,但经历过了才知道,按DFS来写的话,不掌握回溯算法,是不可能拿下的回溯--就是在DFS深入的时候,只要情况不对就撤退,返回原来的位置,并给先前标记的元素取消标记!还有一点需要注意的是:由于对数组做了标记,在刚开始递归的时候,我们不能直接使用原数组,而是把元素组拷贝一份之后再传入递归原创 2022-05-01 09:59:52 · 196 阅读 · 0 评论 -
蛇形填数--超级大模拟--vs2022的调试技巧
目录1、开始调试和结束调试2、观察程序运行时变量和参数的值2.1、自动窗口:2.2、监视3、相关问题据我所经历的比赛中,只要涉及到模拟算法,一般都有蛇形填数这一项。所谓蛇形填数,就是在矩阵中按顺时针从大到小一次填数!请看:题目链接:59. 螺旋矩阵 II - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/spiral-matrix-ii/这题不光要细心,还要你的代码经验足够丰富。最最.原创 2022-04-29 11:52:54 · 4489 阅读 · 1 评论 -
动态规划定点突破—三连击破
目录1、leetcode--不同路径2、leetcode--不同路径23、leetcode--接雨水众所周知,不涉及二维和区间的一般都是没什么难度的【doge】那么就来看(shui)下面三个关于简单dp的leetcode题目吧~~~~~1、leetcode--不同路径题目链接:62. 不同路径 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/unique-paths/这题要是用df.原创 2022-04-26 22:47:14 · 235 阅读 · 0 评论 -
双指针进阶--leetcode题目--盛最多水的容器
题目链接11. 盛最多水的容器 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/container-with-most-water/这题我第一个想法是滑动窗口算法,因为我曾经深受其益三连击破---滑动窗口算法---leetcode_emo~~~~的博客-优快云博客https://blog.youkuaiyun.com/qq_61567032/article/details/123878549?spm=1001.2014.3001原创 2022-04-23 11:07:44 · 826 阅读 · 0 评论 -
动态规划定点突破 --leetcode题目64.最小路径和
题目链接:看过我上一篇文章leetcode题目--120.三角形最小长度和,简单dp_emo~~~~的博客-优快云博客https://blog.youkuaiyun.com/qq_61567032/article/details/124261464的同学可以试试这题,算法思想是一样的,在具体操作时有些许不同同样要注意以下几点1、数据范围2、dp的边界,此题当中行数列数都不固定,大的我们不怕,就怕小的,比如只有一行,或者只有一行一列的数据3、可以尝试再优化一下上代码://最小路径.原创 2022-04-20 10:44:28 · 125 阅读 · 0 评论 -
leetcode题目--120.三角形最小长度和,简单dp
题目链接120. 三角形最小路径和 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/triangle/这一题大家千万不要想着用贪心去做啊!贪心的代码不仅长,而且很容易出错。况且这就是一个dp模板题,连方程都不用推,肯定是想都不想直接dp了注意几点:1、dp是从上往下来看,可题目中说的是从下往上看,在写递推式的时候不要弄反了2、注意限制的数组大小和数据范围。另外,此题的主函数输入也很有趣,我一并给大.原创 2022-04-19 03:30:00 · 348 阅读 · 0 评论 -
leetcode题目--386.字典序排数,DFS
题目链接:386. 字典序排数 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/lexicographical-numbers/s回首先我们需要搞清楚字典序是什么:在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。 这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。对于数字1、2、3....原创 2022-04-18 21:34:38 · 189 阅读 · 0 评论 -
三连击破---滑动窗口算法---leetcode
本文所讲的滑动窗口算法不涉及计算机网络,只是单纯的算法而已滑动窗口,顾名思义:就是一个会滑动的窗口【doge】不难想象,它主要是解决字符串和数组的最优化问题的。关于下面几个题目,我曾花了大量时间尝试贪心和dp,收(mei)效(xie)甚(chu)微(lai)。现场学习滑动算法,连破三题先举个栗子,我们现在有一个字符串s和字符串t,t为"ABC" ,s为“AWGUACHBGAFCB”,现在要求s中包含"ABC"(按顺序)最短子序列的长度。我们这样:1、定义一个双指针left和right,开原创 2022-03-31 17:57:41 · 962 阅读 · 0 评论 -
已知n个数的平均值,求这n个数
这应该是一个比较基本的数学问题:首先答案肯定是不唯一的,我们这里只需要返回任意一组数据就行了解答步骤:设平均值为k,sumy = k * n1、如果sumy%n == 0,直接返回n个sumy / n即可;2、否则,显然在计算机中sumy/n的int值小于真实的值,我们可以先取n个sumy/n 他们的和肯定是比sumy要小的。设q = sumy - sumy/n : 则q表示计算值比真实值小的数,我们分别给n个数中的q个数加上1,即可构造出符合条件的一组数。根据这种方法,其他的数据也原创 2022-03-28 17:14:33 · 881 阅读 · 0 评论 -
leetcode题目--阶乘后的零 ---脑筋急转弯
题目链接:172. 阶乘后的零 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/factorial-trailing-zeroes/其实,遇到这种跟阶乘有关的题目,一般都是不用求阶乘的,小伙伴们千万不要被题目给迷惑了哦~脑筋急转弯:我们要计算尾数有多少个0,根据我小学被罚抄了200遍九九乘法表的经验:只有2×5=10 ,所以我们只需要找给定的数字当中有质因子5或2的个数即可(他俩当中较小的的那个就是答案)..原创 2022-03-26 11:29:26 · 383 阅读 · 2 评论 -
【c++】CTGU2022春校赛原题详解--可以冰墩墩一墩难求啊--单调栈
紧接上文:今天给大家看看另一个我觉得我可以做出来但是没做出来的题。这题乍一看是不是很简单,别着急,时间复杂度限制为o(n),也就是说朴素方法不能过题~所以要使用单调栈(就是很单调的栈[doge]),这里的“单调”跟单调函数的单调是一个意思。所以单调栈是从栈顶到栈底严格递增或递减的栈。关于栈的基本使用,我就不赘述了,注释很多,大家请看吧#include<iostream>#include<stack>using namespace std;int mai原创 2022-03-20 02:00:00 · 767 阅读 · 0 评论 -
【c++】CTGU2022春校赛原题详解:出题人的大航海BFS
此题被一众大佬直呼水题,但身为小白的我还是没有写出来。正所谓从哪里跌倒就要从哪里站起来,所以我今天就恬不知耻地来写一篇题解吧!BFS的模板涉及到队列,queue思路:1、在主函数中先找到起点(起点必须是岛屿),将其坐标传入BFS函数;2、在表示海面的二维数组中有上下左右四个方向,用方向数组表示;3、循环每一个方向是判断这个方向的下一步是否是岛屿(也就是是否满足要求,跟马踏棋盘类似)是的话就把临时变量ans++,最后返回所有ans的最大值。bfs基本操作:1、用数组存储方向原创 2022-03-19 01:45:00 · 310 阅读 · 0 评论 -
【c++】leetcode题目--17、电话号码的字母组合--bfs、树实现<每日一题>
题目链接17. 电话号码的字母组合 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/这一题可以说是现学现卖了。我的思路是:1、电话号码的每一个数字都对应一个字符串,很像一个n叉树,所以我们可以根据宽度优先的思想,来解决这个题目。2、在三番五次的询问dalao之后,我终于了解到:可以使用一个队列,在遍历digits的同时将其对应的字.原创 2022-03-07 01:45:00 · 166 阅读 · 0 评论 -
洛谷题目--P1008三连击--正难则反、模拟、枚举、暴力<每日一题>
题目链接P1008 [NOIP1998 普及组] 三连击 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1008实不相瞒,看见这题我第一次想到的是一个一个遍历数组,然后组建三个数判断是否满足比例,那样太复杂了,经过dalao指点,我才知道正难则反的道理。反向枚举,既可以缩小枚举范围,又便于理解。我的想法:1、从192开始(题目当中有提示,最开始的数据是从192开始的),到333,遍历前面的数据,然后将这个.原创 2022-02-28 23:12:10 · 316 阅读 · 0 评论 -
leetcode题目--缺失的第一个正数--简单哈希<每日一题>
题目链接41. 缺失的第一个正数 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/first-missing-positive/庆祝我leetcode困难题目0的突破啊~~~~~~~~~~~首先讲解一下我的思路:1、建立一个跟nums可能出现的最大元素数值一样长的数组(哈希表),使用哈希的好处是我们可以很快速方便的判断我们需要的元素在不在表中;这也是为了满足题目对时空复杂度的要求;2、遍历一次nums数组,原创 2022-02-28 17:23:01 · 96 阅读 · 0 评论 -
【C语言】leetcode题目--3、无重复字符的最长子串--字符串、循环嵌套
题目链接3. 无重复字符的最长子串 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/这题我觉得用一般的方法不简单原创 2022-02-21 20:09:15 · 159 阅读 · 0 评论 -
【C语言】leetcode题目--969.煎饼排序--类选择排序实现<每日一题>
题目链接969. 煎饼排序 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/pancake-sorting/submissions/选择排序的思想大家都知道吧~这里我们选择数组的最大值arr[max]当做参考值,经过以下两次排序将最大值放在数组的最后面1、首先翻转0~max子序列,将arr[max]放在数组最前面;2、再翻转整个数组,将arr[max]放在最后面。然后去掉数组最后面的元素(对前面不含原最大值原创 2022-02-19 13:49:01 · 561 阅读 · 0 评论 -
LeetCode题目--688.骑士在棋盘上的概率 动态规划<每日一题>
题目链接688. 骑士在棋盘上的概率 - 力扣(LeetCode) (leetcode-cn.com)大致意思:在n*n的棋盘上,骑士走k步后仍在棋盘上的概率,注意:走的过程在走出棋盘或走完k步就终止了这题有很明显的动态规划的气息关于马或者骑士在棋盘上的走法,大家有不了解的可以看我上一篇博客(5条消息) 【c语言】马踏棋盘问题-----递归、深度优先搜索(DFS)、回溯算法_emo~~~~的博客-优快云博客https://blog.youkuaiyun.com/qq_61567032/arti原创 2022-02-17 22:05:22 · 299 阅读 · 0 评论 -
【c++】高精度加法、乘法——加所欲加、乘所欲乘<每日一题>
前面我写了一篇高精度加法的博客,但那个代码其实是有长度限制的,两个加数最多100位,再高一点就要修改宏定义,很不方便。所以我用c++又写了一遍加法,和乘法。上一篇->博客这次用的是c++的string。使用很方便,但是写起来有点难理解。高精加还是分三步:①倒序输入,对齐个位;②相加,进位;③输出(由于string可以字符串相加,所以不需要倒序输出)。 原理跟上一篇的数组写法差不多。唯一有一点不同就是这次需要判断长短,人后给短的字符串补0,保证俩字符串长度相等,就不多赘述了。上代码..原创 2022-01-23 13:09:58 · 373 阅读 · 0 评论 -
洛谷题目[NOIP2016 提高组]P1563 玩具谜题 详解<每日一题>
题目描述小南有一套可爱的玩具小人, 它们各有不同的职业。有一天, 这些玩具小人把小南的眼镜藏了起来。 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图:这时singersinger告诉小南一个谜題: “眼镜藏在我左数第3个玩具小人的右数第11个玩具小人的左数第22个玩具小人那里。 ”小南发现, 这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的: 面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向; 而面向圈外的玩具小人, 它原创 2022-01-21 18:49:50 · 249 阅读 · 0 评论 -
【C语言】汉诺塔问题<每日一题>
问题描述:有三个木桩和n个圆盘(全部堆在木桩1上),要求:1、小圆盘永远只能在大圆盘上面;2、每次只能移动一个圆盘,而且只能从最上面的开始移动;3、把所有圆盘从木桩1移动到木桩3上。这个题目可以用递归算法,分三个步骤:①将n-1个圆盘从木桩1移动到木桩2,借助木桩3;②将第n个最大的圆盘从木桩1移动到木桩3;③将n-1个圆盘从木桩2移动到木桩3,借助木桩2;代码//汉诺塔问题#include<stdio.h>void hanoi(int i, int原创 2022-01-20 20:01:58 · 629 阅读 · 0 评论