
算法
文章平均质量分 61
破东风
always have a try
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode每日一题:对角线上的质数
预处理的优点是,我们保存预处理的结果后,后续的质数判断这一步会变快,当然也付出了存储空间和预处理时间的代价。如果我们的二维数组很大,需要判断是否是质数的次数很大,这个预处理的消耗就会比较值得;,n 可以看作是 x 的 y 被,我们把范围内所有的满足 x 的 y 倍的数,都标记成合数,那么剩余的,就都是质数了。同样的,这里也需要对1这个既不是质数,也不是合数的特殊值,进行额外判断。,这个范围不是很大,在判断质数这一步,我们可以先预处理,求出范围内所有的质数,这样就不用每次调用。原创 2025-03-18 11:32:51 · 826 阅读 · 0 评论 -
leetcode每日一题:使字符串平衡的最小交换次数
不过本题有一些差异,并不是要判断这个字符串是不是合法的括号,而是要求出,最小交换几对,使得这个字符串变成合法的括号。所以,我们这里处理上,也有一些小差异:可以把压栈和出栈的操作看到最合法括号的对消,类似消消乐,那么当我们遇到当前是右括号且空栈的情况下,没有左侧括号可以匹配,可以把这个单独的右括号记录下来。由于整体来看,左右括号的数量必然是相等的,所以我们把合法的括号都消除后,留下来的必然是这样的形式:“]]]...[[[”,k个']'开头,后面跟着k个‘[’。最终字符串变成 "[[][]]"。原创 2025-03-17 19:29:57 · 756 阅读 · 0 评论 -
12只乒乓球
继续简单智力题:有12只乒乓球,其中有一只是次品,次品和正常的乒乓球外观相同,仅重量有差别,可能比正常的轻,也可能比正常的重,现在有一个天平,求3次称出那只次品的方法。目前想到的答案:为方便说明,将乒乓球按照1-12编号。第一步,将乒乓球分成3组,每组4只,例如(1,2,3,4),(5,6,7,8),(9,10,11,12),把第一组和第二组放上去称,可能会有3中结果:第1组比较重原创 2014-12-07 16:12:34 · 1564 阅读 · 0 评论 -
猎人,羊,狼,白菜
一个猎人带着一只羊,一只狼和一棵白菜回家,路上遇到一条河。河边只有一条船,但船太小,一次最多只可载猎人和另一样东西过河。但猎人不在时,狼要吃羊,羊要吃白菜。请问怎样才能把狼,羊,白菜都安全运过河?目前想到的解法:带羊过河,返回带狼过河,返回时把羊带回带白菜过河,返回原创 2014-12-03 09:04:02 · 3837 阅读 · 0 评论 -
25匹马的问题
偶然看到个有意思的智力题,和大家一起讨论:25匹马,要找跑的最快的前三,每轮可以有5匹马赛跑,只能记录先后,不能记录时间,最少需要跑多少轮目前想到的解法:首先分5组,赛5轮,去掉每组最后两匹,剩15匹;然后5组第一名一起赛一轮,去掉最慢的两组,因为前面至少有3匹比这两组的都快;此时剩下9匹,最快的一匹已经产生,还剩8匹,再淘汰第3组的第二,三两匹,第2组原创 2014-11-24 23:24:41 · 1043 阅读 · 0 评论 -
(贪心)HDU 1789 解题报告
(贪心)HDU 1789 解题报告 思路:既然要让被扣掉的分数最少,那么必然是对分数高的作业优先安排。注意题中有一个不是很明显的条件可以支持这一点:完成每份作业都需要一天。这样就避免了优先完成一份分数高的作业而导致n(n>1)份作业没有完成,而且这n份作业分数和比一份分数高的作业还要大的情况。方法:对于所有的作业,按照分数从高到低排序,分数相同时,截止时间小的排在前面。另外初始化一个大小为n的数组,用来保存某一天是否已经被占用。然后开始贪心,对于每份作业,看从当天到当前之前的时间里面,有没有空原创 2014-11-26 22:58:54 · 917 阅读 · 0 评论 -
我所理解的KMP
KMP算法是一种用于字符串匹配的算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,所以叫KMP算法。字符串匹配,就是有一个目标字符串S和模式字符串P,然后查找P在S中是否有出现,出现的话,位置是什么地方。最简单粗暴的方法就是逐个字符比较,从S的第0个字符开始,和P的第0个字符比较,如果相等,再比较后面一个,如果在第n个出现不想等,那么就把S置回第1个(上一次的后原创 2014-11-24 00:05:57 · 537 阅读 · 0 评论 -
快速幂
快速幂是一种对幂取模的快速算法,可以用a^b mod c来表示。原创 2014-11-20 23:31:08 · 602 阅读 · 0 评论 -
HDU 1087 解题报告
Super Jumping! Jumping! Jumping!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23005 Accepted Submission(s): 10122Problem Descript原创 2014-10-30 00:06:17 · 612 阅读 · 0 评论 -
并查集(Disjoint Set)
并查集,一种比较基础的算法,主要是用于解决一些连通性的问题,通常这些问题原创 2014-08-12 00:09:38 · 1008 阅读 · 0 评论