LeetCode
文章平均质量分 67
提升代码工作算法能力
墨白Coding
技术改变世界!
展开
-
LeetCode.3.最长无重复字符子串
如果是没有学过滑动窗口算法思想的小白,看到这个题目的第一思路应该就是暴力循环,然后嵌套循环判断是否为无重复的连续子串,然后记录子串长度。但是这样使用循环嵌套的方法会导致时间复杂度直接来到 O(n^2), 是十分低效的,最好的方法是使用滑动窗口动态判断子串的长度。这题的思路是,创建一个滑动窗口,然后我们维护这个滑动窗口,确保滑动窗口中的子串保持不重复。然后移动滑动窗口,这样我们就能动态计算最大长度了。,请你找出其中不含有重复字符的。由英文字母、数字、符号和空格组成。原创 2024-06-03 17:58:41 · 163 阅读 · 0 评论 -
LeetCode.151 反转字符串中的单词
为了锻炼我们处理字符串的能力,我们可以不使用 Java 提供的各种 API,而是自定义函数完成对字符串的处理。这里我们可以拆分成三个函数,一个去除两端的空格和单词间空格的函数,一个反转指定区间字符串的函数,一个反转每个单词的函数。我们解决翻转单词的思路是 :==去除空格=>==翻转整个字符串=>==翻转每个单词=>有了具体思路,我们就可以直接进行操作了。首先我们要去除字符串中多余的空格,由于 Java 的字符串不可变性这里我们必须创建 StringBuffer 进行操作//创建StringBuffer。原创 2024-01-07 02:06:04 · 1013 阅读 · 1 评论 -
LeetCode.541-反转字符串Ⅱ
这题主要是要考虑到递增的条件 ii += 2 * k,和代表的是剩余元素等于 k ,本人对下标的加减处理还不是很清晰,总是搞不清楚下标加减后对应的条件和数量关系,需要多加练习。原创 2024-01-01 00:01:27 · 383 阅读 · 0 评论 -
LeetCode.15.三数之和
这道题目相比前面的两数之和,难度有所提升,主要是我们要想到使用双指针来优化三元组的查找。不然直接使用哈希表会出现难以操作去重行为,而且时间复杂度还是比较高的。这题就到这里了,欢迎各位前来交流指点。原创 2023-12-28 19:01:57 · 341 阅读 · 1 评论 -
LeetCode 1.两数之和
有人相爱,有人夜里开车看海,有人LeetCode第一题都做不出来。(手动狗头)这道题目还是考察我们对于哈希表的应用。当然我们也可以使用暴力算法,也是可以通过这道题目的,我们可以逐步优化自己的方法。本人刚开始写的时候也是使用O(n^2)的复杂度,后面想到使用双指针加排序,优化到了O(nlogn),最后使用哈希表优化到了O(n)。我们要经历自己去优化方法的过程,这个过程还是比较锻炼我们的编程思维的。原创 2023-12-17 23:48:39 · 466 阅读 · 1 评论 -
LeetCode 202.快乐数
这道题目考察了我们,模拟,选用合适的数据结构存储数据的能力,这里我们合适使用Set集合存储,因为,Set中查找元素只需要O(1)的时间复杂度,而链式结构需要O(n)。方法二的快慢指针适用于查找存在环形结构的题目。好了,本题的就说到这里!原创 2023-12-15 11:36:47 · 459 阅读 · 0 评论 -
LeetCode 350.两个数组的交集Ⅱ
这道题目主要考察了对于哈希表和双指针的应用,需要结合题目给出的数据判断使用什么方法解答,解题过程中要考虑时间复杂度,双指针使用过程中我们要考虑对于指针移动条件的判定,这道题目是对元素大小进行判断,让小的那一方指针进行移动。原创 2023-12-15 11:13:53 · 371 阅读 · 0 评论 -
LeetCode 438.找到字符串中的所有字母异位词
这题使用基础暴力方法,选择对了数据结构也是可以做出来的,就是时间复杂度可能比较高,但还是可以通过leetcode的数据测试,想要优化的话,我们就需要使用滑动窗口算法,这种方法是用于在一个字符串中查找子串,或者判断异位词等多种情况下大幅度减小时间复杂度的一种方法。需要我们多积累滑动窗口的应用场景!原创 2023-12-14 00:37:12 · 497 阅读 · 1 评论 -
LeetCode 49.字母异位词分组
其实这道题目的两种方法,底层思想都是类似的,利用哈希表来存储key,然后将不同的异位词存入哈希表中对应的List中,最后直接将map对应的values转换成List返回即可。我们需要读懂题意,搞清楚什么是异位词。原创 2023-12-13 22:30:15 · 714 阅读 · 1 评论 -
LeetCode 242. 有效的字母异位词
这道题目是一道简单题,我们需要掌握关于字符串的常用处理方法,读懂题意其实并不难,其实使用sort的方法看起来代码还是异常的简洁的,但是使用数组计数的方法,时间复杂度会更低一些。原创 2023-12-13 21:53:09 · 377 阅读 · 1 评论 -
LeetCode 面试题 02.07. 链表相交
这道题目其实更多考察的是思维上的模式,代码并不难,我们要学会对问题进行抽象,并且分析问题中的关键对象和数量关系,只有看懂了题目才能有思路,有了思路,解题就能更加得心应手!共勉!原创 2023-12-09 00:05:11 · 364 阅读 · 0 评论 -
LeetCode 142.环形链表
这道题目主要考察了我们对于数量关系的理解程度,和对快慢指针的使用场景。其实这道题目考察了两个问题1.链表中是否有环2.链表中的环在哪个位置我们要层层深入,逐一击破。掌握了判断链表中是否有环的方法(快慢指针),以后遇到此类判断环的题目就不会再迷糊了。原创 2023-12-10 13:54:59 · 857 阅读 · 1 评论