小小算法,大大智慧
文章平均质量分 63
Mason_F
披荆斩棘,不屈不饶
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Golang-回溯-组合总和
每日力扣-组合总和 今天作为小菜菜的我花了好长时间在这类题型上,做了组合总和与组合总和Ⅱ,花的时间长不可怕,重要的是能领悟,能学到东西!! 这类题需要尝试将数组的元素进行各种组合以至于累加到目标数,很明显题意告诉我们要用递归回溯的思想,进行不断的尝试不断地累加不断地回溯,这样肯定有一定地效率损失,所以要做到一定地优化,我目前知道地优化貌似就是:剪枝,剪去不必要地递归,提升效率~说实话要不是做题我都不知道剪枝是个什么东西,所以实践多做题很重要,有利于扩阔视野,长见识。 接招:组合总和Ⅰ 给定一个无重复元素的原创 2021-05-09 23:19:49 · 387 阅读 · 0 评论 -
Golang-今日力扣-母亲节快乐
今天是母亲节,今日力扣的题是关于制作花的!让我们做花献给我们伟大的母亲。 言归正传:看题目,给你一个整数数组 bloomDay,以及两个整数 m 和 k 。 现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。 花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。 请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。 从题目可以知道,在一个数组的花中,数组各个元素的值就是该花需要多少天才能摘,题目要求制作m束原创 2021-05-09 21:09:08 · 156 阅读 · 0 评论 -
Golang-两种基于选择和插入的排序
希尔排序与堆排序 一、插入排序-希尔排序 希尔排序是基于插入排序的一种算法, 在此算法基础之上增加了一个新的特性,提高了效率。希尔排序的时间复杂度为O( n3/2),空间复杂度为O(1),不需要大量的辅助空间,但它的稳定性是不稳定的。为什么会出现这个算法呢?是由于当考虑到所插入的数据是最小的时候,需要一直移位到头位置,显得效率很低,于是就有了分组插入的思想。 希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入排原创 2021-05-07 14:17:51 · 186 阅读 · 0 评论 -
Golang-快速幂-Pow(x,n)
Pow(x,n) 关于一道计算x的n次幂的问题,如果采用累乘的形式,那就是最朴素的,最简单的一种求解方式,但不实用,累乘的算法的时间复杂度是O(n)。但是我们可以使用快速幂算法降低时间复杂度,将时间复杂度降低到O(logn),其中n是幂。 快速幂: 快速幂的做法简单来说就是把原来的幂拆成多个2的x次幂相加,比如511就拆成5(1+2+8),其中(1+2+8)是 20+21+23,怎么得出这一串的呢?就是把11次幂写成二进制就是:1011,然后1011换算成十进制的过程就是上面那一串~ 所以原来要累乘11次的原创 2021-04-24 22:58:43 · 2240 阅读 · 0 评论 -
Golang-回溯-N皇后
Golang解决N皇后问题~ 问题:n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。不能互相攻击的情况是两个皇后不能在同一直线(横纵)或者同一对角线,只要存在这两种情况均不是解决方案! 例如: 当n等于4的时候可以有两种解,如下: 当n=1的时候,那就刚好只有一个解! 两种输出要求,一种是输出所有N皇后的情况,将结果列出来,另一种就是输出有多少种解。对于这两种不同的输出要求,我们可以采用同一段代原创 2021-04-22 20:56:45 · 417 阅读 · 0 评论
分享