LeetCode题解
文章平均质量分 86
梧桐168
程序员
展开
-
LeetCode3226题. 使两个整数相等的位更改次数解法二(原创)
1.首先计算n和k的异或值m.m中的所有位数中为1的值就是n中为1k中为0,或者n中为0k中为1;2.m&n的结果如果不等于m,那么说明存在n中为0k中为1的情况,那么上文分析的分析,n不可能变换成k,直接返回-1;3.否则说明m里面所有位数为1的值都是n中为1k中为0的情况,那么直接计算返回m中位数为1的数值即可;4.计算m中位数为1的数值方法采用经典的减一循环法原创 2024-11-02 11:47:52 · 372 阅读 · 0 评论 -
LeetCode3226题. 使两个整数相等的位更改次数(原创)
根据题意可以总结出使得n能转变成k的条件是不存在某一bit位,n为0而k为1;另外n转变成k更改次数等于所有的n为1,而k为0的bit位数量之和原创 2024-11-02 11:03:11 · 602 阅读 · 0 评论 -
LeetCode6题:Z字形变换(原创)
此题算法实现思路:一开始根据行数申请若干个字符串数组,然后依次遍历输入字符串并添加到相应行的字符串,先从第一行遍历到最后一行,再从最后一行遍历到第一行,周而复始,直到遍历结束,最后按照顺序输出所有行的字符串。原创 2024-10-26 12:36:53 · 1028 阅读 · 0 评论 -
LeetCode2414题: 最长的字母序连续子字符串的长度(原创)
此题算法实现思路:从头到尾不断比较字符串中相邻得两个字符,如果后一个字符比前一个字符大1,那么当前子字符串就是连续的,将其长度加1,如果不是,那么当前连续子字符串就到此为止,重新开始计算新的子字符串原创 2024-09-20 10:10:11 · 775 阅读 · 0 评论 -
LeetCode54题:螺旋矩阵(原创)
所谓顺时针螺旋循序就是以右->下->左->上的方式四个方向循环缩小的方式访问矩阵数据,一直到当前方向走不通为止原创 2024-08-10 13:06:54 · 649 阅读 · 0 评论 -
LeetCode40题: 组合总和 II(原创)
本题的关键解决思路:因为对于重复的数据,全部选中的情况是唯一的,那么可以将重复的数据一次选入,而不需要递归的方式一个一个的处理,这样性能应该能大大提升;原创 2024-07-31 15:16:26 · 703 阅读 · 0 评论 -
LeetCode 2462题: 雇佣 K 位工人的总代价块(原创)
这道题的解题思路关键点就是采用最小堆,快速获取若干个数中最小值:这道题的解题思路不是很难,但几个边界条件比较麻烦原创 2024-07-26 15:54:20 · 835 阅读 · 0 评论 -
LeetCode 2766题: 重新放置石块(原创)
1.这道题的关键点就是采用Set来处理数据;2.采用HashSet然后自行排序的性能要好于直接使用带排序的TreeSet原创 2024-07-24 14:18:38 · 917 阅读 · 0 评论 -
LeetCode 188题: 买卖股票的最佳时机IV(原创)
动态规划算法是数据结构中一个很重要的算法,另外一般学校里教的都很浅薄,程序员一定要自学掌握其算法脉络,并能学会灵活运用;无后效性,递推算法一般只需要考虑眼前最近一层,其它层一定不需要考虑。“未来与过去无关”;这道题的关键点就是:根据当天的投资次数将二维数组扩展成三维数组,并依次根据昨天的计算数值,对每天持有/未持有股票且交易0到k次各种情况的最大获利值进行计算;LeetCode解题之前,一定不要看题解,看了就“破功”了!原创 2024-07-20 15:27:17 · 1028 阅读 · 0 评论 -
LeetCode 123题: 买卖股票的最佳时机 III代码优化(原创)
算法设计还是要不管精进优化,最终尽量获得最优结果!原创 2024-07-19 11:20:58 · 343 阅读 · 0 评论 -
LeetCode 123题: 买卖股票的最佳时机 III(原创)
根据当天的投资次数将二维数组扩展成三维数组,并依次根据前一天的计算数值,对每天的各种情况进行计算原创 2024-07-19 09:18:06 · 745 阅读 · 0 评论 -
LeetCode 714题: 买卖股票的最佳时机含手续费(原创)
这道题目又是经典的动态规划的问题,定义二维整数数组int dp[n][2],定义dp[i][0]为,第i天客户手里没有股票时的最大收益值,dp[i][1]为,第i天客户手里有股票时的最大收益值原创 2024-07-18 10:36:05 · 909 阅读 · 0 评论 -
LeetCode 7题:整数翻转(原创)
这道题解法比较简单,就是按十进制左右移位计算当前数据尾数值,并通过不断除以10,来获取整数所有数值原创 2024-06-11 16:03:27 · 427 阅读 · 1 评论 -
LeetCode 43题:字符串相乘(原创)
这道题解法的核心在于:两两(假设索引分别为i和j)相乘根据两个数的位置之和设置结果的位置;原创 2024-05-17 09:08:15 · 521 阅读 · 0 评论 -
LeetCode 3题:无重复字符的最长子串(原创)
根据题目描述和对示例进行分析,感觉这一题可以通过“滑动窗口”的算法进行处理,即定义两个索引值i1,i2,i1,i2从0开始,i2向后滑动,判断当前子字符串是否有重复字符,如果没有不断更新最大长度值,如果有的话,将i1设置为与最后一个字符重复的字符下一个索引值。按照这个思路,完成代码编写,并提交LeetCode成功原创 2024-05-16 09:49:56 · 395 阅读 · 0 评论 -
LeetCode 2题:两数相加(原创)
这道题解法的关键流程在于:1)当前两个节点以及上一次进位数值进行求和,模时之后将余数设置为当前节点的数值,并新的进位数带到下一个节点;2)L1或者L2节点为空的情况特殊处理 3)最后一个节点只剩进位值carry的特殊情况处理原创 2024-05-15 15:38:13 · 497 阅读 · 0 评论 -
LeetCode1017题:负二进制转换(原创)
此题解法的关键点就在于“目标值减去当前所有计入数值负二进制位之和的余数,不可以包含低位2进制”原创 2024-04-28 12:25:55 · 580 阅读 · 0 评论 -
LeetCode39题: 组合总和(原创)
回溯算法定义 回溯算法,是一种选优搜索法,又称为试探法,按选优条件向前搜索以达到目标。 回溯算法简要说:但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法。 而满足回溯条件的某个状态的点称为“回溯点”。原创 2024-04-27 11:31:09 · 1025 阅读 · 0 评论 -
LeetCode55题:跳跃游戏(原创)
递归算法比较简单,但会有重复计算的陷阱,之前动态规划算法里也提到过了;原创 2024-04-15 12:22:12 · 1019 阅读 · 0 评论 -
LeetCode-2529题:正整数和负整数的最大计数(原创)
按照大神Donald Knuth所说“思路很简单,细节是魔鬼”,二分查找算法需要特别关注前后索引值这些细节方面。第一篇二分搜索论文是 1946 年发表,然而第一个没有 bug 的二分查找法却是在 1962 年才出现,中间用了 16 年的时间原创 2024-04-10 10:05:06 · 1008 阅读 · 0 评论 -
LeetCode-1669题:合并两个链表(原创)
链表操作要注意首节点保存和尾节点的获取与保存所有链表操作基本上都是对三个变量的操作:当前节点curNode,上一节点preNode,下一节点nexyNode;链表遍历时对不停地更新上面三个变量LeetCode解题之前,一定不要看题解,看了就“破功”了!原创 2024-03-24 14:01:10 · 994 阅读 · 0 评论 -
LeetCode-60题:排列序列解法三(原创)
这里还有一个优化点:交换之后的数组,绝对是一个递减数组,将其变为最小的数,不需要复杂的排序,只要将这一段数字进行倒序排列即可!原创 2024-03-23 20:53:17 · 330 阅读 · 0 评论 -
LeetCode-60题:排列序列解法二(原创)
算法实现精要:每个数字排列的下一个排列:就是从倒数第二个数字开始,往后找到比此数大的数字,两者进行交换,然后再将后面的数字进行排序即可,找不到的话序号向前推进。。。;算法实现最好能精益求精,不可浅尝辄止,温故而知新比做新的算法题可能收获更大;一定要有自己的原创算法思想,不能一味按照公式去套,那样的话就只是机械的应试刷题,没有自己的灵魂!没有自己的思想!LeetCode解题之前,一定不要看题解,看了就“破功”了!原创 2024-03-20 14:20:19 · 1147 阅读 · 0 评论 -
LeetCode-60题:排列序列解法一(原创)
这道题关键的难点在于递归回溯的数字选取上;反复调试代码,查看生成过程,可以清晰的看出整个1-K个序列,每个数字的生成过程原创 2024-03-20 12:13:20 · 864 阅读 · 1 评论 -
LeetCode-17题:电话号码的字母组合(原创)
要掌握回溯算法的思想和实现,此类问题就能迎刃而解:“回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。这种走不通就退回再走的技术为回溯法,所以也经常称作试探法对于此类问题”这一题另外一个关键需要计算数字数值和所有映射的字母之间的数值关系,我自己发现的公式:char c2 = (char) ('a' + (c1 - '2') * 3 + delta + i);原创 2024-03-17 12:11:29 · 782 阅读 · 0 评论 -
LeetCode-337题:打家劫舍III(原创)
递归函数存在大量重复调用的情况,可以考虑设计一个缓存来存储已经计算好的节点,这样能大大提高算法性能原创 2024-03-13 16:38:24 · 1048 阅读 · 0 评论 -
LeetCode-213题:打家劫舍II(原创)
本题的关键点就在于:由于首尾相连,0和N-1的房屋不可能重复抢劫,因此就是按照198题的思路求0到N-2,以及1到N-1分成两批抢劫处理,然后再求出两者最大金额即可原创 2024-03-13 15:07:43 · 1123 阅读 · 0 评论 -
LeetCode-198题:打家劫舍(原创)
本题的关键点就在于“如果不偷当前房屋,上一间房屋可偷可不偷,问题答案就等于上一间房屋偷或不偷两种情况的最大金额;如果偷取当前房屋,上一间房屋则不可偷,问题答案等于当前房屋金额加上上一间房屋的最大金额”原创 2024-03-13 14:49:12 · 970 阅读 · 0 评论 -
LeetCode-92题: 反转链表 II(原创)
这道题就是链表翻转的通用版本. - 力扣(LeetCode),即常见的链表翻转是将长度为n的链表从位置1到位置n的节点进行翻转。把这个算法改写成为通用的链表翻转算法即可,即链表中间一段按通用的翻转算法将左位置到右位置下一节点(左开右闭)这一段节点进行翻转,最后将左位置前一节点指向翻转后的一段链表表的首节点(即右位置)即可原创 2024-03-11 15:10:33 · 1022 阅读 · 0 评论 -
LeetCode-102.题: 二叉树的层序遍历(原创)
这道理的关键点在于“自顶向下,一层接一层交替访问树节点”;算法设计时,可以考虑最简单的情况,试探思考其运行逻辑应该是什么样的还是要有精细化的逻辑思维,层次分明,这样在复杂的逻辑也不会乱;原创 2024-03-08 18:54:53 · 700 阅读 · 0 评论 -
LeetCode-91题:解码方法(原创)
对于此类问题,“动态规划”是王道,递归方式容易思考,但是存在大量的重复计算,性能远远和动态规划无法相比;原创 2024-03-07 10:14:40 · 1135 阅读 · 0 评论 -
LeetCode-22题:括号生成(原创)
掌握“回溯”:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试原创 2024-03-06 14:53:34 · 954 阅读 · 0 评论 -
LeetCode-122题: 买卖股票的最佳时机 II(原创)
动态规划的思想就是将人们正常的跳跃性和跨越性思维,转换成计算机的一步一个脚印,只看眼前路的思维方式原创 2024-03-02 10:12:33 · 417 阅读 · 0 评论 -
LeetCode-121题: 买卖股票的最佳时机(原创)
动态规划算法是数据结构中一个很重要的算法,另外一般学校里教的都很浅薄,程序员一定要自学掌握其算法脉络,并能学会灵活运用;原创 2024-02-29 09:32:02 · 528 阅读 · 0 评论 -
LeetCode-4题:寻找两个正序数组的中位数(原创)
归并算法是数据结构排序算法中一个很重要的算法,归并排序非常稳定,时间复杂度始终都是 N*logN,另外除了常规的数组排序之外,很多场景都可以应用到,比如笔者以前做过的远程和本地文件夹同步算法,就是两边文件名称数组,进行归并比较处理,大家要掌握这个算法思路以及应用技巧;原创 2024-02-25 08:54:13 · 975 阅读 · 0 评论 -
LeetCode-57题:插入区间(原创)
逻辑思维,逻辑思维,逻辑思维,重要的事情说三遍,算法处理一定要相关业务逻辑上想清楚;原创 2024-02-16 13:13:37 · 1042 阅读 · 0 评论 -
LeetCode-208题:实现Tire前缀树(原创)
前缀树对外提供的功能函数,要根据代码执行逻辑,找到其共性点,设计好内部通用函数,一旦内部通用函数设计好,公共的功能函数只需要在此基础上进行封装即可,达到最大的代码复用,并通过这种“正交性”分解,降解了程序的复杂性原创 2024-01-21 11:54:24 · 1051 阅读 · 0 评论 -
LeetCode-25题: K 个一组翻转链表(原创)
1)首先要对复杂问题分解:再复杂的问题像“”庖丁解牛“”一样,找到其中脉络,进行分解之后,都会被切割成简单的个体小单元,很容易理解和掌握。2)要学会“”依此类推“”的思路:算法的解决大数据问题基本都是找出其中规律,进行重复性操作。原创 2024-01-01 09:18:53 · 603 阅读 · 0 评论