自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 树状数组解析

简介树状数组类是线段树,但是却又不同,其对于节点的更改,和查找集合是十分方便的原理假设,我们当前的数组为a,构成的线状数组为c那么即:c[1]=a[1]c[2]=a[1]+a[2]c[3]=a[3]c[4]=a[1]+a[2]+a[3]+a[4]c[5]=a[5]c[6]=a[5]+a[6]c[7]=a[7]c[8]=a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]我们换一个角度观察:c[0001]=a[1]c[0010]=a[1]+a[2]c[001

2021-10-21 22:23:09 80

原创 最少加油次数

题目:汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则返回 -1 。.

2021-10-09 18:16:23 415

原创 最多牌组数

题目:麻将的游戏规则中,共有两种方式凑成「一组牌」:顺子:三张牌面数字连续的麻将,例如 [4,5,6]刻子:三张牌面数字相同的麻将,例如 [10,10,10]给定若干数字作为麻将牌的数值(记作一维数组 tiles),请返回所给 tiles 最多可组成的牌组数。注意:凑成牌组时,每张牌仅能使用一次。示例 1:输入:tiles = [2,2,2,3,4]输出:1解释:最多可以组合出 [2,2,2] 或者 [2,3,4] 其中一组牌来源:力扣(LeetCode)链接:https://leet.

2021-10-09 18:15:31 1730

原创 劲爆金曲解析

剩下n首歌,t秒时间,问最多能唱几首的前提下,最长时间输出最多歌数和最长时间思路:典型的动归问题,假设我们现在要唱j秒,然后当我们新加入一首歌时,我们会判断能否加入。如果加入那么最多能唱的歌数为j减去这首歌的时间内能最多唱的数量+1如果不加入,那么就是未加入这首歌时,j秒内最多能唱的数量因此,我们推出公式dp[i][j]=max{dp[i−1][j],dp[i−1][j−songs[i]]+1}dp[i][j]=max\{dp[i-1][j],dp[i-1][j-songs[i]]+.

2021-10-01 18:21:01 74

原创 并查集(golang实现)

对于一组数据,当要求我们检查某两个数据是否在同一集合内时,就需要并查集去实现了如:<a,b>,<b,c>,那么很明显a、b、c都在同一集合内实现思路:如果我们先将输入的a、b指向自己,再将a指向b,即a令父亲为b那么:当我们再输入b,c后,跟上面一样的操作:很明显,我们就可以通过a,b,c是否拥有统一父亲确定是否为同集合了理解这个思路很简单,那么代码如何实现?首先,设置两个map进行数据的存储var fa map[int]int // 父节点var cn.

2021-09-30 23:07:18 474

原创 书架问题(动归)

题目:你把要摆放的书 books 都整理好,叠成一摞:从上往下,第 i 本书的厚度为 books[i][0],高度为books[i][1]。按顺序 将这些书摆放到总宽度为 shelf_width的书架上。先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelf_widt),然后再建一层书架。重复这个过程,直到把所有的书都放在书架上。需要注意的是,在上述过程的每个步骤中,摆放书的顺序与你整理好的顺序相同。 例如,如果这里有 5 本书,那么可能的一种摆放情况是:第一和第二本书放在第一层书架上,.

2021-09-29 21:38:14 646 1

原创 马拉车算法实现

题目:给定一段字符串,求该其最长的回文子串主要思路:我们创建一个将目标字符穿进行扩充,然后使用#进行填充,并在前后分别添加^和$方便后续操作再创建一个数组T记录当前节点的半径如何构造?假设当前该设置下标为i的值了,i的左边有一个下标c的,其半径能到达的最右边为当前最大那么,如果i关于c对称的点在c的半径里面,那么i的半径一定大于等于其对称点的半径,即可以设置为对称点的半径,如果不在,就先假设当前i的半径为0然后我们再对i加上当前已知i半径的左右比较,如果相等则将T[i]+1,反之就..

2021-09-27 23:12:38 56

原创 Golang的指针类型传递

关于Golang的指针传递首先,我们先来看一段代码package mainimport "fmt"func main(){ var i []int try(i) fmt.Println(i) //[]}func try(i []int){ i = append(i, 1)}在这里,理论上来说本应该打印[1],因为切片为一个指针,在try函数对其进行了append,其本来指向的地址也应该改变。但是,这里却为空Golang的值传递首先,Go这门语言对参数的传递都是值传递的,也

2021-09-21 20:12:01 1248

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除