算法
小菜菜ovo
这个作者很懒,什么都没留下…
展开
-
【递归+记忆搜索C++】P1464 Function
题目:https://www.luogu.com.cn/problem/P1464?contestId=30130思路:记忆化搜索,其实跟暴力搜索差不多,就是把得到的每一个答案都存起来,再次用到的时候直接使用就可以了。这个题也是这个意思,把已经求出的结果存起来,用到时直接用,不用再计算上代码:#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#inclu原创 2020-05-24 23:00:19 · 281 阅读 · 0 评论 -
【贪心算法c++】---P2782 友好城市
题目:题目地址:https://www.luogu.com.cn/problem/P2782思路:这个题乍一看没有啥规律,但是我们做多了贪心的问题就知道,这样的问题是可以转换成区间问题的,我们输入a和b,把小的一个当做左端点,另一个当做右端点,然后按照右端点从小到大排序,满足什么样的条件才可以把答案加1呢?举个简单的例子2 5 81 3 71和2连接,3和5连接,是不是3>1和5>2,只要满足这样的一个条件就行啦上代码:#incl原创 2020-05-17 19:44:17 · 516 阅读 · 0 评论 -
【动态规划C++】---1259:求最长不下降序列
信息学奥赛一本通原题链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1259思路:每到一个数,就从这个数开始往前找比它小的数,这样到这个数的长度就是比它小的数的长度+1,找出其中长度最大的记录下来就好了最后输出的时候,我们就从拥有最大长度的那数开始往前输出(我是先存入栈,再从栈里输出),具体看代码吧!上代码:#include<iostream>#include<cstring>#include<algorith原创 2020-05-08 21:01:07 · 454 阅读 · 0 评论 -
【动态规划c++】---P1002 过河卒
题目:落谷的P1002题:https://www.luogu.com.cn/problem/P1002思路:最开始我用的是深搜算法,但是提交后发现超时了,改用的DP。到达某一个位置所需要的方法为:DP[i][j] = DP[i-1][j] + DP[i][j-1]这个公式不需要推,大家自己验证一下就可以啦!当然还是有点细节要处理,就是DP[i][j]不可以是马的位置以及马控制点的位置...原创 2020-05-03 21:05:58 · 400 阅读 · 0 评论 -
错排公式
问题:现有10本书按照顺序摆放,现要求重新排列,使得新的书的顺序中每一本书都不在原来的位置,求有多少种排列方式?这个问题推广一下,就是错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。 研究一个排列错排个数的问题,叫做错排问题或称为更列问题OK,现在详细分析这个问题,我...转载 2020-05-02 21:42:23 · 158 阅读 · 0 评论 -
【二分算法C++】---P1824 进击的奶牛
题目描述Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,…,xN (0<=xi<=1,000,000,000)。他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John想把这些牛安置在指定的隔间,所有牛中相邻两头的...原创 2020-04-19 17:49:59 · 1150 阅读 · 1 评论 -
【数学算法c++】---1111.有效括号的嵌套深度
题目:题目链接:https://leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/因为这个题的题目有点太绕了,简单点就是把这个括号们分成两组,让这个两组,使max(depth(A), depth(B)) 的可能取值最小。思路:怎么使max(depth(A), depth(B)) 最...原创 2020-04-02 20:12:20 · 463 阅读 · 0 评论 -
【递归算法c++】---1161.最大层内元素和
题目:给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。请你找出层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。 1 / \ 7 0 / \ 7 -8 输入:[1,7,0,7,-8,null,null]输出:2解释:第 1 层各元素之和...原创 2020-04-02 19:48:22 · 189 阅读 · 0 评论 -
【快排算法c++】---912.排序数组
题目:给你一个整数数组 nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000-50000 <= nums[i] <= 50000来源:力扣(LeetCode)...原创 2020-03-31 20:25:19 · 263 阅读 · 0 评论 -
【递归算法c++】---约瑟夫环 62.圆圈中最后剩下的数字
题目:0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:...原创 2020-03-31 18:59:15 · 297 阅读 · 0 评论 -
【贪心算法c++】---洛谷|P1325 安装雷达
题目:描述:假设海岸线是一条无限延伸的直线。它的一侧是陆地,另一侧是海洋。每一座小岛是在海面上的一个点。雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d。你的任务是建立尽量少的雷达站,使所有小岛都在扫描范围之内。数据使用笛卡尔坐标系,定义海岸线为x轴。在x轴上方为海洋,下方为陆地。样例1如图所示输入格式第一行包括2个整数n和d,n是岛屿数目,d是雷达扫描范围。接...原创 2020-03-29 20:22:19 · 1389 阅读 · 0 评论 -
【分治算法c++】---n^p mod m
题目:就是求求 n^p mod m 的值其中:1≤n,m≤10^91≤p≤10^{14}思路:就是简单的分治加递归,例如2^6 = 222222,我们就可以先算22*2,这样就可以避免数太大超出范围啦上代码:#include<iostream>#include<cstring>#include<algorithm>#include<c...原创 2020-03-29 10:59:31 · 824 阅读 · 0 评论 -
【递归算法力扣】---105.从前序与中序遍历序列构造二叉树
题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2020-03-25 10:46:11 · 144 阅读 · 0 评论 -
【力扣算法快慢指针】---141.环形链表、876.链表的中间结点
题目链接:环形链表:https://leetcode-cn.com/problems/linked-list-cycle/submissions/链表的中间结点:https://leetcode-cn.com/problems/middle-of-the-linked-list/快慢指针思路:设置两个指针,一开始都指向头结点,向下走的时候,一个慢指针一步一步的走,另一个快指针大于一步的走(...原创 2020-03-24 18:15:12 · 142 阅读 · 0 评论 -
【力扣算法pyhon】---945.使数组唯一的最小增量
题目:给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 ...原创 2020-03-22 20:35:43 · 129 阅读 · 0 评论 -
【贪心算法c++】---Crossing River
题目:几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间。【输入】输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。【输出】输出t行数据,每行1个数,表示每组过河最少时间。【输入样例】141 2 5 10【输出样例】17思路:我最开始认为是最快的和最慢的一起过河,最快的回来,可是并不得17,后来发现其实是1和2过河,1回来 用时...原创 2020-03-21 20:15:03 · 2219 阅读 · 0 评论 -
【贪心算法C++】---整数区间
题目:请编程完成以下任务:1.从文件中读取闭区间的个数及它们的描述;2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。【输入】首行包括区间的数目n,1≤n≤10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0≤a≤b≤10000,它们是某一个区间的开始值和结束值。【输出】第一行集合元素的个数,对于每一个区间都至少有一...原创 2020-03-20 19:34:43 · 2722 阅读 · 0 评论 -
【贪心算法c++】---活动安排
题目:学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。现在给出n个活动使用礼堂的起始时间begini和结束时间endi(begini<endi),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。【输入】第一行一个整数n(n≤1000);接下...原创 2020-03-20 19:28:35 · 3114 阅读 · 0 评论 -
【力扣算法python】---409.最长回文串
题目:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。题目链接:https://leetcode-cn.com/pr...原创 2020-03-19 21:58:51 · 230 阅读 · 0 评论 -
【力扣深搜算法python】---102.二叉树的层次遍历
题目:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]力扣链接:https://leetcode-cn.com/problems/binar...原创 2020-03-19 14:47:58 · 214 阅读 · 0 评论 -
【排序算法C++】---P1012 拼数
题目描述设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613输入格式第一行,一个正整数nn。第二行,nn个正整数。输出格...原创 2020-03-14 19:12:25 · 600 阅读 · 0 评论 -
【力扣算法python】---1013.将数组分成和相等的三部分
题目:给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。示例 1:输出:...原创 2020-03-11 22:51:05 · 373 阅读 · 0 评论 -
【递归算法力扣python】---543.二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。来源:力扣(LeetCo...原创 2020-03-10 22:06:15 · 252 阅读 · 0 评论 -
【贪心算法力扣C++】---122.买卖股票的最佳时机II
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交...原创 2020-03-08 09:18:37 · 318 阅读 · 0 评论 -
【大数算法C++】--p1601 A+B problem
题目输入格式分两行输入。a,b<=10^500输出格式输出只有一行,代表a+b的值例子:输入:11输出:2思路:两个数最大为10^500,就是字符数组为510(不设500是因为有时候会有溢出的情况)剩下的步骤就是正常大数加法的步骤,两个数a,b当成字符数组写入,然后倒转字符数组,存入到int数组里,进行相加。上代码:#include<iostream>...原创 2020-03-06 17:40:13 · 272 阅读 · 0 评论 -
【穷竭算法C++】---p2010 回文日期
题目:给定两个日期(例如20011221),算出在这两个日期之间(包括这两个日期)一共有多少个回文日期例子:输入:2011010120111231输出:1输入:2000010120101231输出:2思路:因为每一年只有一个日期符合题意,所应我们只需在给定的两个日期的年份上进行迭代,找到每一年的回文日期,并且判断找到日期是不是在两个给定的日期之间,找到的日期的月和日是...原创 2020-03-05 19:59:45 · 287 阅读 · 0 评论 -
【穷竭搜索算法C++】---p1149 火柴棒等式
题目描述给你n根火柴棍,你可以拼出多少个形如“A+B=CA+B=C”的等式?等式中的AA、BB、CC是用火柴棍拼出的整数(若该数非零,则最高位不能是00)。用火柴棍拼数字0-90−9的拼法如图所示注意:加号与等号各需要两根火柴棍如果A≠B,则A+B=C与B+A=C视为不同的等式(A,B,C>=0A,B,C>=0)nn根火柴棍必须全部用上输入格式一个整数n(n<=24...原创 2020-03-05 18:57:11 · 791 阅读 · 0 评论 -
【力扣算法C++】---101.对称二叉树
啊啊原创 2020-03-05 13:46:06 · 273 阅读 · 0 评论 -
【力扣算法C++】---100.相同的数
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: ` 1 1 / \ / \ 2 3 2 3` [1,2,3], [1,2,3] 输出: true示例 2:...原创 2020-03-02 22:19:19 · 258 阅读 · 0 评论 -
【力扣算法C++】---225.用队列实现栈
使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque...原创 2020-03-01 20:47:33 · 117 阅读 · 0 评论 -
【力扣算法JAVA】28.实现strStr
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba...原创 2020-02-18 19:05:16 · 311 阅读 · 0 评论 -
【算法c++】---求100000以内自守数
自守数:指一个数的平方的尾数等于该数自身的自然数例:52 = 25 252 = 625 762 = 5776 93762 = 87909376因为计算机不能算太大的数的,所以就模仿手算例如:因为76是两位数,所以我们只需要看结果的最后两位是否等于76就可以了,而且,在计算过程中,并不是所有的值都能影响到结果的后两位,第一个部分积中(即456):被乘数最后三位×乘数的倒...原创 2020-02-11 16:05:43 · 1917 阅读 · 0 评论 -
【力扣算法Java】---27.移除元素
题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元...原创 2020-02-08 19:17:02 · 275 阅读 · 0 评论