
算法
难赋·慈善家
这个作者很懒,什么都没留下…
展开
-
MINIEYE后期题解
前言这场比赛真是脑袋疼,耗了挺长时间的。后面的题解都放在这里了,需要自取。第二场1001 I love cube给出一个边长为n−1n-1n−1的长方体,找出所有平行于三个坐标面的等边三角形,且坐标需为整数。题解容易发现,边长只能是斜着的,对每个边长计算,为8∗(n−i)38*(n-i)^38∗(n−i)3,最终答案为∑i=1n−18∗(n−i)3=2∗(n(n−1))2\sum^{n-1}_{i=1}8*(n-i)^3=2*(n(n-1))^2∑i=1n−18∗(n−i)3=2∗(n(n−1原创 2021-08-31 20:21:42 · 207 阅读 · 2 评论 -
力扣刷题笔记
2021/08/30 - 39. 组合总和程序设计类问题一共大致分为两类题目,一类是需要手工计算的,这类问题需要前期的数学论证,用数学的方式寻求问题的解,代码仅仅是作为数值运算的工具。第二类是需要计算机判断的,这类问题能够找到一个统一的、计算机可以解决的问题。人们不用动脑子,仅仅把问题转化成计算机框架的输入格式,交给计算机去完成就行了。今天涉及到的回溯算法就是这么个例子。回溯算法回溯算法,首先确定问题的解空间,按照一定的顺序(宏观的看待,是一棵将被剪枝的树),遍历其解空间,得到结果集。针对这个问题原创 2021-08-30 20:35:35 · 68 阅读 · 0 评论 -
归并排序(常数空间复杂度的一个变体)
归并排序其他博客已经介绍了很多,这里主要贴一下空间复杂度是O(5)的一个算法设计思路。归并排序流程归并排序是不断地将数组分成大小大致相同(偶数相同,奇数左小右大)的子数组,先对子数组进行排序,再进行合并的算法。归并的步骤不需要考虑,空间复杂度是出在合并字串上的,故下面对合并字串进行讨论。合并字串为方便叙述,对用到的符号和语言作如下规定:数组L,R表示左子串和右子串。R[i]语法与python相同。len为数组长度,lenllen_llenl为左子串长度,lenrlen_rlenr为右子串长原创 2020-12-22 14:37:27 · 354 阅读 · 0 评论 -
希尔排序
希尔排序是对插入排序的改进版本,插入排序是建立在相邻元素(索引相距为1)的交换上,希尔排序是建立在索引相距为AiA_iAi元素的交换上;这样就减少了比较的次数,在宏观上使一趟遍历后更加有序。希尔在提出这个排序时推荐使用...原创 2020-12-17 09:27:53 · 84 阅读 · 0 评论