算法
壹零叁玖
多多重复 百炼成钢
展开
-
湖南大学ACM10054——导弹拦截问题
问题描述按照给定导弹的高度计算出一枚导弹最多可以拦截多少个敌方导弹,这些导弹最少需要多少枚去拦截。题目分析题目的思想一目了然,属于动态规划和贪心法结合。对于第一问,一枚导弹最多可以拦截几枚敌方导弹,这个问题和我们之前说过的最长单调子序列是一样的,详细可见最长单调递增子序列这不过这个问题我们要求单调递减子序列,但是解法一样。第二问,最少的导弹拦截系统,即我们需要几枚导弹可以全部拦截掉。我们...原创 2020-04-24 22:17:56 · 496 阅读 · 1 评论 -
PTA刷题Basic篇——1022.D进制的A+B——Day(11)
题目描述输出D进制下的A+B题目分析我仍然使用了pow(10,n)的这个函数,因为我每次求出余数的时候我想直接将这个余数直接加入结果。即第一个余数是3,那么sum += 3*pow(10,0)。第二个余数为0,就sum+=0,第三个余数为1,sum+=1 * pow(10,2)等等以此类推,但是最后得到的结果神奇的为1102.而且我将第一个余数输出,它确实也是3,这就很不科学!所以我怀疑是...原创 2020-04-18 01:25:31 · 157 阅读 · 0 评论 -
PTA刷题Basic篇——1021个位数统计——Day(11)
又是凌晨更新的一篇博客,发现自己最近经常在凌晨刷PTA,可能是因为乙级简单,到了晚上思路也很清晰,leetcode就不敢凌晨刷。但是现在也慢慢发现了,越往后题目越有坑,而且还真的不知道坑在哪里,只能换一种方法去避免这个坑,比如今天这两道题,个人认为坑都不小,如果有朋友知道我哪里出问题,希望可以给我评论或者私信我。具体问题我会在下文提出题目描述统计每个数字出现的个数,并将数字从小打大排序输出。...原创 2020-04-18 01:21:10 · 224 阅读 · 0 评论 -
PTA刷题Basic篇——1020.月饼——Day(10)
问题描述计算出获得指定月饼数量的最大收益。题目分析最近leetcode的DFS,回溯,动态规划做多了。感觉这道题有点像进化版的0-1背包问题,我还打算用动态规划,分解成子问题,依次遍历之后找前一个状态的最大值和当前状态的最大值来判断更新。(笑抽)后来发现这个方法不光复杂而且难以实现,因为如果月饼种类很多的话,这个方法其实是很不稳定的而且前序状态很多很耗时间。所以我们用一个更简单的方法,求平...原创 2020-04-17 13:41:52 · 245 阅读 · 0 评论 -
PTA刷题Basic篇——1019.数字黑洞——Day(10)
问题描述数字黑洞是指将输入的数字的各个位置按照从小打到的顺序进行排列,得到最小的数。然后再从大到小排列得到最大的数。大数-小数得到的差依然作上述操作,知道结果等于6174。即进入了数字黑洞模式。题目分析如果要多输入的数字的各个位置进行排序,显然不能输入整数类型的数据,所以我们要输入一个字符串,字符串的形式对数字进排序。但是字符串需要再转换为int类型的数字才能做差。所以我们还应该单独写...原创 2020-04-17 13:27:04 · 208 阅读 · 0 评论 -
PTA刷题Basic篇——1018.锤子剪刀布——Day(9)
题目描述题目分析设立一个比较函数来判断A赢或者 B赢或者平局。分别计算出现的次数,然后输出。对于获胜最多手势,我们求出两个人在赢的情况下,分别是以什么手势赢的,取最大值对应的手势输出。但是这里要注意的是,我们先判断这个最大值和对应手势的出现次数的比较顺序应该是按照字母降序的,即B->C->J的比较顺序。因为如果遇到相等的次数,我们就可以先将小字母先输出,其他的就不用看了。代码...原创 2020-04-16 01:09:59 · 137 阅读 · 0 评论 -
PTA刷题Basic篇——1017.A除以B——Day(9)
题目描述题目分析从题目就可以看出这是一道高精度的问题,如果只是做简单的除法,1000位的数字我们的计算机不可能吃的进去,所以我们要想一种更高效的除法。而且我们的除数是一位数,这让问题变得更简单了。我们想一想,我们在做普通的除法时,通常会列一个竖式,我们每次会取前两个数组构成一个两位数,然后让这个两位数除以这个一位数字,将商直接输出(如上图就是46/7,商是 6,直接输出,余数是5保留)...原创 2020-04-16 00:59:02 · 240 阅读 · 0 评论 -
湖南大学ACM——10388.高级模运算(二分幂求解)
根据输入的数字,进行次方运算并加和。题目分析这道题不难,相信很多朋友都能马上做出来,只需要按照函数的次方函数pow()即可解决,但是里有一坑,就是数组溢出的问题。我们每次都做pow(A,B)的运算很有可能造成溢出,那应该如何更好地求幂运算呢?我们想到了一个经典的方法:二分幂!遇到求幂运算容易溢出的问题应该快速想到二分幂和快速幂或者矩阵幂二分幂的思路很简单:long long binpo...原创 2020-04-11 22:55:30 · 648 阅读 · 2 评论 -
湖南大学ACM——10015.self-numbers
问题描述大概翻译一下问题,就是说对于一个数字,如果将它的各个位数相加,再与其自身相加,就会得到一个新的数字。例如:75+7+5=87,则我们说87是由75产生的数字。但是有一些数字他们只能产生其他数字,而不能通过其他数字产生,这些数字我们称为self-numbers。本题要求我们找出1-10000中的所有self-numbers.题目分析题目很像一个嵌套问题,我们假设一个数字产生另一个数字...原创 2020-04-11 22:42:38 · 234 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(7)——移除元素
题目介绍今天是数组部分的第七题,整个题库的第27题,难度为简单难度这个题目题干非常容易理解,我们只是想要删除数组中的一些重复元素,但是我们不能额外开辟新的存储空间,只能在原地操作,而且要返回移除后的数组长度,且数组的顺序可以发生变化。题目分析我们删除数组元素的操作最简单的就是pop(),但它是从后删除元素,所以我们会选择从后往前遍历,如果元素值等于val就pop就好。很简单没什么可写的...原创 2020-03-23 01:00:31 · 102 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(6)——删除数组中的重复数
题目介绍今天是数组部分的第六题,整个题库的第26题,难度简单。代码使用python语言。我们需要在原地删除数组中的一些重复元素,让每个元素都在数组中只出现一次。有两个已知的信息很关键:1.我们需要在原地删除一些重复元素,这就意味着我们的空间复杂度为O(1),我们不能再创建一个空件去存放一些元素。2.我们的数组时已经排好序的了,所以我们不需要再耗费额外的时间复杂度去将我们的数组进行排序。相邻...原创 2020-03-15 18:21:10 · 150 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(5)——四数之和
题目介绍今天这道题是数组部分的第五题,难度中等。这道题和上一道三数之和的题很类似,更多体现的知识点不在数据结构上,而是在算法上,就是我所说的多指针算法。对于三数之和的问题,我们固定了一个指针,使另外两个指针相向移动,对于四数之和问题采取相同的思路,但这次我们刚开始的时候要固定两个指针。尽量保证每次变量有两个。(因为只能有两种移动方向).题目分析但是这道题还是有一个难点需要大家注意:我们...原创 2020-03-09 00:10:07 · 147 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(4)——最接近的三数之和
题目介绍今天是这道题是数组部分的第四题,整个题库的第16题,最接近的三数之和我们的目的是在一个给定数组中找到三个数,让这三个数的加和最接近于target,这道题和我们上一次说过的三数之和问题非常类似,都是通过三个指针来解决问题。下面我们来说一下具体的思路题目分析首先我们看一下这道题的特点:它不要求我们返回索引之类的数据,只要求我们返回数据的值即可,那么我们就可以随意折腾我们的这个数组。根...原创 2020-03-01 22:42:58 · 122 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(3)——三数之和
题目介绍今天的题目是数组部分的第三题,也是这个题库的第十五题,难度为中等:我们的目的是从给定的数组中,找到三个数字,这三个数字的加和为0,且这三个数字不能重复(注意:这里的重复不是指数字意义上的重复,如果同一个数字出现了两次,那我们可以使用这个数字最多两次,但不能对一个只出现了一次的数字进行重复的使用)。题目分析在这里提供给大家一个做有关数组方面题的首要思路:·观察将这个数组排序之后会不...原创 2020-02-24 01:33:25 · 193 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(2)——盛最多水的容器
题目介绍及描述上一篇文章我们讲解了第四题,也就是数组中的第二题:寻找两个有序数组的中位数这篇文章介绍一下第11题,也就是数组中的第三道题,盛最多水的容器。这道题难度标记为中等,我们先来看一下题目:题目分析我们对这个题做一个大体的分析。所谓盛最多的水,其实就是让我们在这些长方形的柱子中找出两个柱子,让他们围成的面积是最大的。有很多同学可能刚上来的时候就想着,那只要底或者高最长就好了。其实这...原创 2020-02-09 00:20:12 · 147 阅读 · 0 评论 -
菜鸡的leetcode之旅——数组(1)
一个菜鸡的自述Hello,各位共同投身于互联网的朋友们。首先先介绍一下自身的情况。本人大三,非计算机专业,但是辅修了计算机科学与技术。但对计算机方面兴趣浓厚,以后也想从事于计算机相关行业。所以现在开始刷leetcode的题目。在这里先介绍一下我的计划,目前刷的是数组方面的问题,先刷20道然后换其他的,等每个标签都刷一遍以后再系统地刷题。每天刷完两道题会在这里和大家进行分享,希望大家互相监督,共...原创 2020-02-07 01:26:39 · 162 阅读 · 0 评论