Golang leetcode
记录力扣题解
cheems~
业精于勤,荒于嬉;行成于思,毁于随。
展开
-
golang力扣leetcode 494.目标和
494.目标和题目:给一个数组,和一个target,数组元素可以变正变负,求变号之后,数组元素之和=target的方案数思路:1动态规划2 暴力dfs,枚举所有情况原创 2022-06-01 00:15:23 · 238 阅读 · 1 评论 -
golang力扣leetcode 剑指Offer II 114. 外星文字典
剑指Offer II 114. 外星文字典题目:这题题目属实写的跟屎一样,样例给的也有问题现在有一种外星文,与a…z顺序不同,给出一个用外星文构造的字符串列表。注意:字符串内部的字符排列,不是根据外星文排序的字符串与字符串之间,谁排在前面,谁排在后面,是根据外星文排序的请根据该字符串数组,还原出外星人字典序。如果不存在合法字母顺序,返回”“,答案可能有多个,返回任意一个。在两个字符串相同下标的字符,称为ch1和ch2,在第二种情况中,排在前面的字符串,必定ch1 < ch2 。如果字符相同,len(word原创 2022-05-31 23:16:33 · 229 阅读 · 0 评论 -
golang力扣leetcode 第 295 场周赛
golang力扣leetcode 第 295 场周赛前言第一题6078.重排字符形成目标字符串题解代码第二题6079.价格减免题解代码第三题6080.使数组按非递减顺序排列题解代码第四题6081.到达角落需要移除障碍物的最小数目题解代码前言T1,T2太简单,不用思考。T3单调栈蛮有难度T4如果能想到用图来做就很简单第一题6078.重排字符形成目标字符串6078.重排字符形成目标字符串题解题目:给一个字符串s和target,问字符串s中能拼出几个target,用过的字符不能再用思路:1.原创 2022-05-30 00:48:49 · 280 阅读 · 0 评论 -
golang力扣leetcode 437.路径总和III
437.路径总和III437.路径总和III题解代码437.路径总和III437.路径总和III题解题目:给一个二叉树,和一个target,求从上到下的路径,有几条路径的路径和=target,路径可以不包含根节点,叶子节点,但是路径要从上到下,连续。思路:双重递归题目意思就是说可以不包括父节点1.那么就有两种情况,包括和不包括2.dfs:计算包含当前节点,并递归左右子树3.pathSum:包含父节点进入dfs,不包含父节点进入左右子树的pathSum前缀和1.我们知道遍历树原创 2022-05-29 23:53:29 · 220 阅读 · 0 评论 -
golang力扣leetcode 416.分割等和子集
416.分割等和子集416.分割等和子集题解代码416.分割等和子集416.分割等和子集题解题目:给定一个数组,问能否将该数组分成两个数组,并且这两个数组元素累加值一样思路:首先剪枝:1. 数组元素少于2,肯定不行2. 数组元素累加和是奇数,肯定不行3. 元素中最大元素>累加和的一半,肯定不行那么对于数组来说,只要拼凑出元素和=累加和/2,就行了,一定会存在没有选的元素累加=一半的。1. 刚开始,想的是递归,只有选和不选,超时2. 记忆化, AC,但是效率很低对于自上而下的原创 2022-05-26 22:21:43 · 236 阅读 · 0 评论 -
golang力扣leetcode 406.根据身高重建队列
406.根据身高重建队列406.根据身高重建队列题解代码406.根据身高重建队列406.根据身高重建队列题解题目:给定一个打算的<身高,前面有k个人身高大于等于自己>的数组,返回一个按照<身高,前面有k个人身高大于等于自己>要求排列的数组思路:1.一般这种数对的数组,都是按照第一个排序,第二个反着排序2.这里看到要求是,前面有k个身高大于等于自己的人3.那么先对身高进行降序,对k进行升序因为 “有k个身高大于等于自己的人”这个条件,那么必定对于每个人来说前面的人身原创 2022-05-26 17:16:26 · 210 阅读 · 0 评论 -
golang力扣leetcode 699.掉落的方块
699.掉落的方块699.掉落的方块题解代码699.掉落的方块699.掉落的方块题解题目:相当于俄罗斯方块下落,如果当前方块下面有方块,就会叠上去,给一个方块数组,求每个方块的高度,不过这句话要做修改,是记录目前所有已经落稳的== 方块堆叠的最高高度 ==,即如果当前方块的高度小于之前堆叠的最高高度,当前高度赋值为堆叠的最高高度思路:很明显的区间查询和区间修改,用线段树来做,可惜我不会,直接用暴力方法1.遍历方块数组2.遍历当前方块之前的方块数组3.如果当前方块与之前的方块重合 则hei原创 2022-05-26 16:58:15 · 321 阅读 · 0 评论 -
golang力扣leetcode 467.环绕字符串中唯一的子字符串
467.环绕字符串中唯一的子字符串467.环绕字符串中唯一的子字符串题解代码467.环绕字符串中唯一的子字符串467.环绕字符串中唯一的子字符串题解题目:给一个a到z的字符串s,并且定义该字符串s是无限环绕的,即a…xyzabcd…yzabc…,给一个字符串p,问p中的有多少个子串,出现在s中。例如p=cab,则 a,b,c,ab这4个子串在s中出现过思路:动态规划p=bcdb 1(b)bc 2(c,bc)bcd 3(d,cd,bcd)p=cabc 1(c)ca 1原创 2022-05-25 22:24:15 · 218 阅读 · 0 评论 -
golang力扣leetcode 399.除法求值
399.除法求值399.除法求值题解代码399.除法求值399.除法求值题解题目:给一个字符串除法数组,比如a/b=1,b/c=2的数组,再给一个查询数组,比如a/c b/a,返回查询数组的值,如果出现不存在的字符串,返回-1,如果根据已有条件查询不到值的,也返回-1思路:本题可以看作带权有向图,a到b的距离是1,b到c 的距离的2,但是本题是除法,也就是说a/b b/c ---->a/c = a/b * b/c,即更新边距离的时候,不是以往的算最小,而是相乘图论一般可以用dfs,bfs原创 2022-05-25 22:01:40 · 356 阅读 · 0 评论 -
golang力扣leetcode 347.前K个高频元素
347.前K个高频元素347.前K个高频元素题解代码347.前K个高频元素347.前K个高频元素题解题目:给一个数组,统计出现频率前k高的元素思路:1. 将元素和出现次数存入map2. 快排出现次数1.堆排序,小根堆2.当堆中的元素大于k时,弹出堆顶,因为是小根堆,所有弹出的都是最小的出现次数3.那么剩余堆中的k个元素就是出现频率前k高的元素了注意Pop,我之前一直以为Pop是弹出末尾的元素,类似队列,结果Pop是弹出堆顶元素,并维护堆,那么对于小根堆来说,Pop就是弹出最小的元素原创 2022-05-23 22:04:13 · 319 阅读 · 0 评论 -
golang力扣leetcode第 294 场周赛
第294场周赛第294场周赛前言第一题2278.字母在字符串中的百分比题解代码第二题2279.装满石头的背包的最大数量题解代码第三题2280.表示一个折线图的最少线段数题解代码第294场周赛第294场周赛前言每周差不多稳定3题,这T4也忒难了第一题2278.字母在字符串中的百分比2278.字母在字符串中的百分比题解题目:某个字母出现在字符串中的百分比思路:用库函数一行代码func percentageLetter(s string, letter byte) int { retur原创 2022-05-23 21:01:23 · 236 阅读 · 0 评论 -
golang力扣leetcode 675.为高尔夫比赛砍树
675.为高尔夫比赛砍树675.为高尔夫比赛砍树题解代码675.为高尔夫比赛砍树675.为高尔夫比赛砍树题解题目:给一个二维矩阵,0不能走,1是陆地,2+是树,1和1往上都能走,从0,0开始,但是要从低树走到高树,计算步数。举个例子,先从0,0走到最低的树,即<0,1>高为2的树,再走到下一个最低的树,计算步数,如果某棵树走不到则返回-1,反则返回累加步数[1,2,3][0,0,4][7,6,5]思路:题目蛮简单的,只不过题目描述太恶心了,做阅读理解一样重点:从低树走高树原创 2022-05-23 20:27:38 · 237 阅读 · 0 评论 -
golang力扣leetcode 337.打家劫舍III
337.打家劫舍III337.打家劫舍III题解代码337.打家劫舍III337.打家劫舍III题解题目:给一个二叉树,相邻两个节点不能同时选,问能选的节点累加最大的值思路:暴力递归 - 最优子结构1.既然相邻不能选,那么method1:选当前节点以及4个孙子节点method2:不选当前节点,选两个孩子节点返回max(method1, method2)记忆化 - 解决重复子问题爷爷节点会计算孙子节点父节点也会计算孙子节点存在重复子问题,用记忆化解决动态规划即使用了记忆化剪原创 2022-05-23 08:43:50 · 245 阅读 · 0 评论 -
golang力扣leetcode 464.我能赢吗
464.我能赢吗464.我能赢吗题解代码464.我能赢吗464.我能赢吗题解题目:博弈,给定一个maxChoosableInteger和desiredTotal,两个人每次取1~maxChoosableInteger中的数字(不放回),取出的数字累加和超过desiredTotal游戏结束,两个人每次选择都是最优解,问先手的人赢还是后手的人赢思路:1.由于maxChoosableInteger 数据量较小,可以用状态压缩2.设当前数字累加为sum,遍历可以选的元素,当前想选的新数字为x3.如果原创 2022-05-23 08:20:36 · 309 阅读 · 0 评论 -
golang力扣leetcode 第 293 场周赛
第293场周赛第293场周赛前言第一题2273.移除字母异位词后的结果数组题解代码第二题2274.不含特殊楼层的最大连续楼层数题解代码第三题2275.按位与结果大于零的最长组合题解代码第四题2276.统计区间中的整数数目题解代码第293场周赛第293场周赛前言4题A3题,,T4很明显用线段树,已经不会写线段树了,文末两段代码吧第一题2273.移除字母异位词后的结果数组2273.移除字母异位词后的结果数组题解题目:给一个字符串数组,相邻字符串不能是字母异位词(字符串A用自身的字母重新排列,变原创 2022-05-19 19:44:33 · 357 阅读 · 0 评论 -
golang力扣leetcode 309.最佳买卖股票时机含冷冻期
309.最佳买卖股票时机含冷冻期309.最佳买卖股票时机含冷冻期题解代码309.最佳买卖股票时机含冷冻期309.最佳买卖股票时机含冷冻期题解题目:一次操作可以买股票,卖股票,啥都不干,在卖股票的下一天是冷冻期,不能买股票,求最大利润思路:dpState: dp[i][0]持股 时的最大利润 dp[i][1]不持股 时的最大利润 dp[i][2]冷冻期 时的最大利润Function: //持股的状态转移:【上一次持股,这次啥都不干】,或者【冷冻期之后买入本次的股票】 dp[原创 2022-05-19 11:40:48 · 287 阅读 · 0 评论 -
golang力扣leetcode 691.贴纸拼词
691.贴纸拼词691.贴纸拼词题解代码691.贴纸拼词691.贴纸拼词题解题目:给你一个target字符串,再给你一个stickers字符串数组,数组元素可用重复拿取,问最少需要几个数组元素,才能用数组元素中出现过的字母,拼凑出target字符串。思路:1.既然可用重复拿取,说明只遍历一次数组是不够的2.第一次用元素拼凑,可能不够,还要第二次,第二次需要的数量,与第一次拼凑之后的状态有关3.对于这种当前状态与上一次状态有关的,用BFS来做1.对target字符串中出现的字母计数,得到一原创 2022-05-19 11:07:53 · 218 阅读 · 0 评论 -
golang力扣leetcode 面试题04.06.后继者
面试题04.06.后继者面试题04.06.后继者题解代码面试题04.06.后继者面试题04.06.后继者题解题目:给定一个二叉搜索树,和一个节点p,求节点p的后继节点(中序遍历的下一个节点)思路:利用性质1.如果root>p,说明p在左子树,进入左子树,同时记录prev=root原来的位置2.如果root=p,说明找到了,此时prev就是p的后继中序遍历1.按照左根右的顺序,递归把节点存下来2.根据p.val二分即可代码func inorderSuccessor1(roo原创 2022-05-19 09:08:48 · 256 阅读 · 0 评论 -
golang力扣leetcode 668.乘法表中第k小的数
668.乘法表中第k小的数668.乘法表中第k小的数题解代码668.乘法表中第k小的数668.乘法表中第k小的数题解题目:给定一张n * m的乘法表,问从小到大第k个数是多少思路:二分答案,将题目转换为小于等于x的数有几个,二分出小于等于x的数有k个时,x就是答案那么现在的问题就是求小于等于x的数有几个,然后不断二分x如何求小于等于x的数呢?以x=4为例,第一行有min(4/1,n)个,第二行有min(4/2,n)个…以此类推在乘法表中每一行都是上一行的2倍x 整除以 i 得到了原创 2022-05-19 08:54:38 · 237 阅读 · 0 评论 -
golang力扣leetcode 462.最少移动次数使数组元素相等II
462.最少移动次数使数组元素相等II462.最少移动次数使数组元素相等II题解代码462.最少移动次数使数组元素相等II462.最少移动次数使数组元素相等II题解题目:让所有数组元素变成相等的数字,一次只能加一或减一,问需要几次思路:需要找到一个数字,计算元素到该数字的距离即可如何求这个数字呢?设x在区间[a0,a1,a2,a3,a4,…,an]外,对于a0和an来说,ans=a0-x + an -x设x在区间[a0,a1,a2,a3,a4,…,an]内,对于a0和an来说,ans=原创 2022-05-19 08:37:41 · 231 阅读 · 0 评论 -
golang力扣leetcode 301.删除无效的括号
301.删除无效的括号301.删除无效的括号题解代码301.删除无效的括号301.删除无效的括号题解题目:给定包含左右括号和字母的字符串,要求删除某些括号后,该字符串括号匹配(字母不删),如果只删1个就能合法,返回所有合法字符串,如果删2个才能合法…总之删除括号的数量越少越好思路:dfs+回溯1.预处理出需要删除的左右括号的个数(rmL,rmR)2.dfs遍历字符串,如果是左括号,则 temp := str[:i] + str[i+1:] dfs(temp, i, rml-1原创 2022-05-13 11:04:32 · 361 阅读 · 0 评论 -
golang力扣leetcode 面试题01.05.一次编辑
面试题01.05.一次编辑面试题01.05.一次编辑题解代码面试题01.05.一次编辑面试题01.05.一次编辑题解题目:给定两个字符串,只能进行一次[增加一个字符,删除一个字符,修改一个字符],问能否在一次编辑,或者,零次编辑后,两个字符串相等思路:1.对于零次的情况:两个字符串本来就相等2.如果两个字符串长度差为2,至少需要两次,直接返回false即可3.遍历短的字符串,依次判断字符,直到遇到不相等的情况 如果两个字符串长度相等:修改----》直接判断后半串字符串是否相等 如果两个字原创 2022-05-13 08:22:52 · 246 阅读 · 0 评论 -
golang力扣leetcode 297.二叉树的序列化与反序列化
297.二叉树的序列化与反序列化297.二叉树的序列化与反序列化题解代码297.二叉树的序列化与反序列化297.二叉树的序列化与反序列化题解题目:给你一个二叉树,序列化从一个string字符串,再从一个string字符串还原出二叉树思路:1.序列化:前序遍历,根左右2.反序列化:递归,根左右代码type TreeNode struct { Val int Left *TreeNode Right *TreeNode}type Codec struct{}func Co原创 2022-05-10 22:07:07 · 331 阅读 · 0 评论 -
golang力扣leetcode 287.寻找重复数
287.寻找重复数287.寻找重复数题解代码287.寻找重复数287.寻找重复数题解题目:给一个数组,元素大小1~n,其中有一个数出现两次,要求用O(1)的空间复杂度求出这个出现两次的元素,并且不能修改原数组思路:快慢指针1.快慢指针起始位置可以在0,0 也可以在0,1,总之fast总会和slow相遇,但是我比较喜欢写在0,0,不必纠结2.可以将数组看作一个链表,比如[2,3,1,2],下标是[0,1,2,3]3.则[0>2,1>3,2>1,3>2]---->原创 2022-05-10 20:50:39 · 337 阅读 · 0 评论 -
golang力扣leetcode 279.完全平方数
279.完全平方数279.完全平方数题解代码279.完全平方数279.完全平方数题解题目:给一个n,问n最少由几个平方数相加得到思路:很明显,大n的值由小n推导过来,比如8=4+4,所以这里用dpdp[i]:表示i最少由多少个平方数相加得到dp[i-j*j]就是小n的值,则因为减去了j*j所以dp[i]默认为1的原因就是默认其中一个平方数就是j*j代码func numSquares(n int) int { dp := make([]int, n+1) for i := 1; i原创 2022-05-08 21:38:05 · 667 阅读 · 0 评论 -
golang力扣leetcode 240.搜索二维矩阵II
240.搜索二维矩阵II240.搜索二维矩阵II题解代码240.搜索二维矩阵II240.搜索二维矩阵II题解题目:给一个从左到右递增,从上到下递增的二维矩阵,搜索一个数在不在矩阵中思路:一想就是二分从左到右递增,从上到下递增的性质其实可以从右上开始搜索如果当前的数小于target,则进入下一行如果当前的数大于target,则进入上一列代码func searchMatrix(matrix [][]int, target int) bool { for i, v := range原创 2022-05-08 21:04:34 · 462 阅读 · 0 评论 -
golang力扣leetcode 第 292 场周赛
第 292 场周赛前言第一题6056.字符串中最大的3位相同数字题解代码第二题6057.统计值等于子树平均值的节点数题解代码第三题6058.统计打字方案数题解代码第四题6059.检查是否有合法括号字符串路径题解代码前言感觉T3才应该是hard,其他的都挺简单的第一题6056.字符串中最大的3位相同数字6056.字符串中最大的3位相同数字题解题目:求字符串中连续3个相等并且较大的子字符串思路:模拟即可代码func largestGoodInteger(num string) string原创 2022-05-08 18:52:53 · 386 阅读 · 0 评论 -
golang力扣leetcode 442.数组中重复的数据
442.数组中重复的数据442.数组中重复的数据题解代码442.数组中重复的数据442.数组中重复的数据题解题目:给一个数组,返回数组中出现两次的数,数是1-n的,并且只出现一次或两次,要求常数的时间复杂度思路:1.数组下标0~n-1 数值大小1-n2.如果v出现过,把v-1下标处的值置为负数3.如果v-1下标处的值本来就是负数,说明v这个值是第二次遍历到了4.将v添加到答案中代码func findDuplicates(nums []int) (ans []int) { for原创 2022-05-08 14:50:06 · 539 阅读 · 0 评论 -
golang力扣leetcode 433. 最小基因变化
433.最小基因变化433.最小基因变化题解代码433.最小基因变化433.最小基因变化题解题目:给你一个字符串,和一个合法字符串数组,字符串每次只能变一个字符,并且是"ACGT"其中一个,变之后需要时合法字符串,问能不能变到给定的end字符串思路:dfs+回溯1.这里每次只能变一次,很容易想到dfs+mp判断是否合法2.但是存在A->B->A的情况,需要把之前的字符串设为vis=true,之后再回溯掉3.并且可能有多种路径变化,只需记录第一次的最短路径即可代码func m原创 2022-05-08 14:43:41 · 377 阅读 · 0 评论 -
golang力扣leetcode 239.滑动窗口最大值
239.滑动窗口最大值239.滑动窗口最大值题解代码239.滑动窗口最大值239.滑动窗口最大值题解题目:给一个数组,再给一个k大小的滑动窗口,求窗口内的最大值思路:优先队列 和 单调栈1.维护一个单调递减队列2.对于窗口右移,就是往队列中插入,与删除3.而删除需要遍历,但是本题其实不急着删除,即延迟删除4.也就是说当nums[i-k] == queue[0]的时候,就可以删除,这样就是O(1)5.对于插入,需要维护递减,如果插入v大于下面的,则弹出下面的即可例如:[5,6,1,2]3原创 2022-05-05 09:37:29 · 473 阅读 · 0 评论 -
golang力扣leetcode 713.乘积小于K的子数组
713.乘积小于K的子数组713.乘积小于K的子数组题解代码713.乘积小于K的子数组713.乘积小于K的子数组题解题目:求乘积小于K的连续的子数组的个数思路:1.因为是连续的,所以可以用滑动窗口来做2.如果当前这个数小于K,说明至少可以加13.如果乘积大于等于k,移动左指针,并缩小乘积4.最后乘积必定小于k,那么ans+=right-left是什么意思呢?5.[2,5,6],100 对于这种情况,答案有[6][2,5,6],[5,6]6.其中[6]已经加过了,那么还剩两个,rig原创 2022-05-05 08:31:31 · 459 阅读 · 0 评论 -
golang力扣leetcode 238.除自身以外数组的乘积
238.除自身以外数组的乘积238.除自身以外数组的乘积题解代码238.除自身以外数组的乘积238.除自身以外数组的乘积题解题目:给定一个数组,求除自身以外数组的乘积,并要求时间复杂度O(n),空间复杂度O(1)思路:1.O(n)的复杂度,说明要遍历两次2.第一次遍历,累计左边数组的乘积,注意边界lSum[0]=13.第二次遍历,累计右边数组的乘积,注意边界rSum[n-1]=14.第三次遍历,除自身以外数组的乘积=lSum[i]*rSum[i]优化上面的做法,时间复杂度是满足了,但原创 2022-05-04 14:35:02 · 792 阅读 · 0 评论 -
golang力扣leetcode 1823.找出游戏的获胜者
1823.找出游戏的获胜者1823.找出游戏的获胜者题解代码1823.找出游戏的获胜者1823.找出游戏的获胜者题解题目:n个位围成一个环,每次删除第k个人,求最后一个人是谁思路:约瑟夫环1.在最后一轮中,只剩一个人,下标pos1=(0+k)%12.该人既然是最后一个人,说明他在每一轮都是安全的3.倒数第二轮:pos2=(pos1+k)%24.倒数第三轮:pos3=(pos2+k)%35.倒数第n轮:posN=(pos[N-1]+k)%n6.得到递推公式,posN=(pos[N-1]+原创 2022-05-04 11:02:51 · 791 阅读 · 0 评论 -
golang力扣leetcode 221.最大正方形
221.最大正方形221.最大正方形题解代码221.最大正方形221.最大正方形题解题目:求数组中的最大正方形的面积思路:动态规划state: dp[i][j]:以i,j为右下角的正方形的最大边长function: dp[i][j] = min(dp[i-1][j], dp[i-1][j-1], dp[i][j-1]) + 1intialize: answer: 代码func maximalSquare(matrix [][]byte) int { n, m := len(mat原创 2022-05-03 19:53:56 · 403 阅读 · 0 评论 -
golang力扣leetcode 937.重新排列日志文件
937.重新排列日志文件937.重新排列日志文件题解代码937.重新排列日志文件937.重新排列日志文件题解题目:简单题1.如果字符串第二部分是数字,则排最终结果的最后2.如果两个字符串第二部分都是数字,则保持相对稳定3.如果字符串第二部分是字母,则字母排前面3.如果两个字符串第二部分都是字母,则第二部分按字典序排3.如果第二部分也相等,按第一部分字典序排思路:内置排序写less,或者模拟。简单题没什么难度,主要是学到了新的函数介绍:sort.Slice()//相同元素时不保证稳定原创 2022-05-03 19:11:43 · 1567 阅读 · 0 评论 -
golang力扣leetcode 207.课程表
207.课程表207.课程表题解代码207.课程表207.课程表题解题目:给你一个课表,<x,y>,需要先修x,才能修y,问是否能上完所有课思路:典型的拓扑排序的问题,bfs即可代码func canFinish(numCourses int, prerequisites [][]int) bool { indeg := make([]int, numCourses) mp := make(map[int][]int) queue := make([]int, 0) for原创 2022-05-02 22:54:02 · 584 阅读 · 0 评论 -
golang力扣leetcode 198.打家劫舍
198.打家劫舍198.打家劫舍题解代码198.打家劫舍198.打家劫舍题解题目:数组中相邻的元素不能相加,求数组中满足这个条件进行相加的最大值思路:state: dp[n]:递推到第n个元素时的最大值function: dp[i] = max(dp[i-2]+nums[i-1], dp[i-1])//加当前的元素,所以前一个不能用,所以是dp[i-2],或者不加当前的元素,最大值就是上一个状态的值了intialize: dp[1] = nums[0]answer: dp[n]代码原创 2022-05-02 22:29:40 · 383 阅读 · 0 评论 -
golang力扣leetcode 169.多数元素
169.多数元素169.多数元素题解代码169.多数元素169.多数元素题解题目:数组中出现一半以上的数,要求时间复杂度O(n),空间复杂度O(1)思路:投票算法代码func majorityElement(nums []int) int { now := 0 count := 0 for i := 0; i < len(nums); i++ { if count == 0 { now = nums[i] } if now == nums[i] { coun原创 2022-05-02 21:52:39 · 248 阅读 · 0 评论 -
golang力扣leetcode 160.相交链表
160.相交链表160.相交链表题解代码160.相交链表160.相交链表题解思路1:1.用map存A的所有节点,赋值为true2.遍历B的节点,如果map[cnt]=true说明就是交点思路2:1.统计A的长和B的长,谁长谁先走几步,走到长度一致位置2.A和B一起走,遇到相同的节点返回即可3.如果不相交,返回nil思路3:1.设链表A的不相交长为m,B不相交从部分为n,相交长为c,即len(A)=m+c,len(B)=n+c2.循环,A和B一起走,如果A走到nil了,则A赋值为原创 2022-05-02 21:43:04 · 681 阅读 · 0 评论 -
golang力扣leetcode 152.乘积最大子数组
152.乘积最大子数组152.乘积最大子数组题解代码152.乘积最大子数组152.乘积最大子数组题解题目:求子数组的乘积最大值思路:1.既然是连续子数组,那么这次答案与上一次有关(dpMax[i-1]*cnt)2.而cnt可能是负数,所以这次答案与cnt也有关3.而负负得正,可能变成最大值4.所以dpMax[i] = max(cnt, dpMax[i-1]*cnt, dpMin[i-1]*cnt)5.至于cnt=0的情况,dpMax直接为0了,只需要在ans中记录最大值即可注意:不仅原创 2022-05-02 21:09:23 · 420 阅读 · 0 评论