![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
LeetCode题目及思路
塔城就是个弟弟
这个作者很懒,什么都没留下…
展开
-
LeetCode -Easy - 67 - 二进制求和
原题链接 : 二进制求和年后第一天上班, 上的有点懵…昨天有点晚了, 再加上这题目不想用自带的二进制写, 就给拖到了今天, 说回题目:题目是给定两个用字符串表示的二进制, 需要给出他们两个的和, 题目不是很难, 也有不少解法 , 我自己用的方法比较笨, 模拟了二进制的加法来做的 , 参考代码如下 : // 得到两个字符串的长度 int lena = a.length(); int lenb = b.length(); // 用长的减去短的, 得到差原创 2022-02-10 19:36:25 · 422 阅读 · 0 评论 -
LeetCode - Easy - 66 - 加一
原题链接 : 加一年假的最后一天啦~ 出门溜达了一天, 晚上到家继续学习, 继续简单题.这次的题目比较简单, 用数组的方式记录整数, 并返回加1后的数组, 只需要想明白几种情况即可.当前下标数值加1后不是10, 则直接加1后返回 ;当前下标值加1后是10, 则当前位置填0, 继续循环当所有下标值加1后都是10, 说明原数组都为9,则直接返回原数组长度+1的数组, 且0下标置为1 ;参考代码 : int tag = digits.length ; // 从最原创 2022-02-08 22:28:14 · 240 阅读 · 0 评论 -
LeetCode - Easy- 58 - 最后一个单词的长度
原题链接 : 最后一个单词的长度各位开工大吉 恭喜发财~ 继续我的LeetCode之旅, 今日的题目比较简单, 最后一个单词的长度, 给定的字符串只有空格和字母, 而且length最小为1. 题目要求求最后的单词, 所以从后往前找是最快的. 因为比较简单, 就不啰嗦啦 直接上代码 :参考代码 1 int tag = s.length() - 1; // 先把后面的空格全部排除掉,找到最后不为空格的下标 while (s.charAt(tag) == ' ') {原创 2022-02-07 12:38:11 · 340 阅读 · 0 评论 -
LeetCode - Easy - 53 - 最大子数组和 [动态规划]
原题链接 : 最大子数组和当我看到题目的时候, 就已经明了了这题绝对又是一个让人可以快乐学习的题目. 果然, 不出所料~真是妙到家了哈哈哈这题有四种解法, 暴力破解(没错就是我) , 贪心 , 动态规划 和 分治 . 暴力破解不说了哈, 只简单说一下动态规划的思路.动态规划的一些思路可以从这个文章里了解, 我觉得他写的足够明了 : 什么是动态规划使用动态规划前, 需要判断当前题目是否满足无后效性和最优子结构, 在数组内求最大子数组的和, 这明显是满足最优子结构的条件, 而求一个局部最优的过程对后续原创 2022-02-06 13:51:13 · 178 阅读 · 0 评论 -
LeetCode - Easy - 35 - 搜索插入位置
原题链接 : 搜索插入位置名副其实的简单题, 不像昨天的第28题,披着简单题的外衣, 其实是想让我学习KMP ???? .题目要求搜索给定值在数组中的位置,从第一个例子 : 1,3,5,6 目标值5, 输出2 可以看出, 如果有相同的, 需要插入左边, 又要求使用O(logn)时间复杂度的算法, 这就差直接说使用二分查找了吧…二分查找不用多说啦, 直接上参考代码 : // 处理几种特殊情况 if (nums == null) return 0; // 最后的比ta原创 2022-02-05 12:05:52 · 204 阅读 · 0 评论 -
LeetCode - Easy - 28 - 实现strStr()
原题链接 : 实现strStr()哎呀这题呀… 给我看到怀疑人生…开门见山哈, 这题有三种解法, 如果作为简单题来看, 这题的思路就比较简单粗暴简单题的思路 :题目的意思是要在原串里找到目标串,并返回原串的首下标, 最简单的思路就是将原串长度为目标串的子串都依次和目标串比较, 如果有完全一样的则返回原串的起始下标. 参考代码如下 : //如果目标串为"",则返回0 if (needle.equals("")) return 0; // 如果为nul原创 2022-02-04 16:03:56 · 249 阅读 · 0 评论 -
LeetCode - Easy - 27 - 移除元素
原题链接 : 移除元素这题… 这题和26题有虾米本质的区别吗…我是感觉没有…思路也是双"指针", 刚开始时候快指针和慢指针指向开头, 判断条件为当快指针指向的值不等于给定值时, 慢指针和快指针后移 ; 如果快指针的值和给定值相等时, 慢指针不动, 快指针后移去寻找和需要删除的值不相等的, 然后走不相等的逻辑 . 所以这里不需要去判断相等了咋样, 只需要处理不相等时的逻辑即可.参考代码如下 : // 定义返回的数组长度 int res = 0; // 处理边界情况原创 2022-02-03 11:35:44 · 666 阅读 · 0 评论 -
LeetCode - Easy - 26 - 删除有序数组中的重复项
原题链接 : 添加链接描述首先, 不得不吐槽一下这题的描述… 删除有序数组中的重复项, 而且不允许使用额外的数组空间, 看到这满头问号… 读了几遍才明白, 题目的意思是直接在原数组上修改, 最后返回修改后数组内无重复元素的范围.思路其实也比较明了, 使用双指针, 一个跑的快在前面比较, 一个跑的慢的在后面做修改 , 当快指针发现当前下标值与上一个值不同时, 将慢指针向前移动一位, 并把快指针当前值赋予慢指针移动后的下标.参考代码如下 : // 这里的res是下标 int res原创 2022-02-02 12:10:30 · 5738 阅读 · 0 评论 -
Easy - 21 - 合并两个有序链表
原题链接 : 合并两个有序链表各位铁汁新年快乐, 大年初一给大家拜年啦~回到这个LeetCode , 关键词在于给定的是两个有序且为升序的链表, 要求返回一个合并后的升序链表, 如果一个为空, 则返回另一个.思路大家应该都能想到, 拿两个链表的节点顺序比较, 将较小的指向较大的,然后循环往复 . 这里比较难的点在于递归的写法 , 这里我说下我自己的方法 .一般在需要写递归的时候, 重要的一点在于需要确认的是什么情况下结束递归, 这里我会去看最后一次的情况, 拿这道题举例 :假设 链表1是: 1原创 2022-02-01 11:53:07 · 618 阅读 · 0 评论 -
Easy - 20 - 有效的括号 [新年快乐, 虎年吉祥~]
原题链接 : 有效的括号今天除夕啦, 祝大家新年快乐, 虎年吉祥~ (LeetCode不能停,哈哈哈)题目要求判断给定字符串里的括号是否都为有效括号, 理想情况下, 一个左括号一个有括号, 判断两个括号是否为一个类型即可, 考虑到可能会有连续不同类型的左括号出现, 这里需要在出现第一个右括号时, 去判断最后一个左括号是否与之匹配. 想到这里, 比较明显的可以想到用栈来解决,遇到左括号则压栈, 遇到右括号则与栈顶比较, 是一个类型则移除栈顶 , 最后如果栈是空的, 则所有括号都为有效括号.代码如下,原创 2022-01-31 21:05:17 · 935 阅读 · 0 评论 -
Easy - 14 - 最长公共前缀
原题链接 : 最长公共前缀首先审题, 从题目名可以得知, 需要我们给出最长的, 公共的前缀. 这里要注意区分前缀和子串(别问我为啥提示)…既然是前缀, 就比较简单了, 一般有两个思路 :横向比较拿首个字符串和第二个字符串做比较, 得到公共的前缀, 如果没有就不用再比了, 直接返回"" ; 如果有, 则拿得到的最长前缀和下一个字符串比较, 有则继续, 无则直接返回, 以此类推;纵向比较拿首个字符串的字符依次和后面所有的字符串的相应位置字符比较, 都有则继续比较下一个, 有一个无则直接返回原创 2022-01-30 17:48:00 · 370 阅读 · 0 评论 -
Easy - 13 - 罗马数字转整数
原题连接 : 罗马数字转整数这一题是Easy题, 其主要关键点在于下面这段逻辑, 即如何处理非常规情况下的罗马数字乍一看这段, 可能感觉有点晕乎乎的, 其实它的规律很明显, 如果一个罗马数字的左边比其本身小, 则减去, 其他的正常加和即可.Java代码如下 : // 核心逻辑 : 如果一个罗马数字的左边比其本身小, 则减去 // 有两种思路, 一种从左到右遍历, 一种从右往左遍历, 这里看心情, 喜欢哪个就用哪个 // 定义最终返回的数字 int ret_sum原创 2022-01-28 22:47:56 · 505 阅读 · 0 评论