leetcode篇
文章平均质量分 59
leetcode
@来杯咖啡
物极必反,否极泰来,法天象地,以定位也.
展开
-
leetcode刷题经验积累总结(持续更新中......)
一、判断循环解决方式1、快慢指针2、判断循环还有一种方式,就是定义集合,通过比较地址判断集合中是否有该元素(而不是值相同。链表为例)。例题【leetcode】142. 环形链表 II(快慢指针)【leetcode】202.快乐数...原创 2022-03-07 20:24:48 · 205 阅读 · 0 评论 -
【leetcode】博客模板
目录标题题目思路代码1.解体方法,如二分法2.解题方法,如暴力法题目题目名字题目描述,可图片思路抓住几个关键词有序(升序);代码1.解体方法,如二分法2.解题方法,如暴力法原创 2022-02-16 15:58:08 · 1209 阅读 · 0 评论 -
力扣算法练习汇总(持续更新......)
目录标题一、排序篇二、力扣篇一、排序篇Java实现快速排序–O(nlogn)二、力扣篇原创 2022-02-16 15:16:22 · 1598 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 22. 链表中倒数第k个节点
代码】【剑指Offer】剑指Offer22.链表中倒数第k个节点。原创 2022-07-24 18:36:13 · 124 阅读 · 0 评论 -
【剑指 Offe】剑指 Offer 18. 删除链表的节点
代码】【剑指Offe】剑指Offer18.删除链表的节点。原创 2022-07-24 18:33:39 · 161 阅读 · 0 评论 -
【剑指 Offe】剑指 Offer 17. 打印从1到最大的n位数
代码】剑指Offer17.打印从1到最大的n位数。原创 2022-07-24 18:29:14 · 123 阅读 · 0 评论 -
【剑指 Offe】剑指 Offer 11. 旋转数组的最小数字
遇到排序的题目,首先就是二分。原创 2022-07-16 15:50:55 · 132 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 10- II. 青蛙跳台阶问题
以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)剑指 Offer1、2、注意标题中的。原创 2022-07-13 23:17:15 · 106 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 10- I. 斐波那契数列
以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)剑指 Offer 10- I. 斐波那契数列1、2、注意标题中的原创 2022-07-13 23:05:46 · 121 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 09. 用两个栈实现队列
以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)剑指 Offer 09. 用两个栈实现队列1、2、原创 2022-07-13 22:32:31 · 117 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 07. 重建二叉树
以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)剑指 Offer 07. 重建二叉树1、2、LeetCode官方思路时间和空间复杂度时间复杂度:O(n),其中 n 是树中的节点个数。空间复杂度:O(n),除去返回的答案需要的 O(n) 空间之外,我们还需要使用O(n) 的空间存储哈希映射,以及 O(h)(其中 hh 是树的高度)的空间表示递归时栈空间。这里 h < n,所以总空间复杂度为 O(n)。.........原创 2022-07-11 12:08:53 · 100 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 06. 从尾到头打印链表
以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)剑指 Offer 06. 从尾到头打印链表1、2、原创 2022-07-10 23:03:06 · 192 阅读 · 0 评论 -
【leetcode】4. 寻找两个正序数组的中位数
目录标题算法汇总题目关键点代码1.暴力法思路代码时间和空间复杂度2.其他方式思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目4. 寻找两个正序数组的中位数关键点1、“提示”中给出数组的元素可以是正数、0、负数;2、正序(从小到大);3、题目中给出(2+3)/2 = 2.5; 那么代码中如何让结果是2.5呢?// 结果是2.0。 5和2都是int类型double d = 5 / 2; // 结果是2.0。 5和2原创 2022-03-25 18:39:27 · 469 阅读 · 0 评论 -
【leetcode】3. 无重复字符的最长子串
目录标题算法汇总题目关键点代码1.暴力法思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目3. 无重复字符的最长子串关键点1、对"“空字符串的判断2、对” "带有空格的字符串的判断String str = " ";str.length() == 1;代码1.暴力法思路代码class Solution { public int lengthOfLongest原创 2022-03-24 22:11:51 · 210 阅读 · 0 评论 -
【leetcode】2. 两数相加
目录标题算法汇总题目关键点代码1.模拟法 1- 行不通(超出int最大范围)思路代码时间和空间复杂度2.模拟法2思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目2. 两数相加关键点1、链表2->4->3,对应的值是342;2、代码1.模拟法 1- 行不通(超出int最大范围)思路1、两个链表各自求和2、定义新链表然后赋值思路中的缺陷:1、1、int类型的最大范围-2147483648 和 21474原创 2022-03-24 20:56:21 · 241 阅读 · 0 评论 -
【leetcode】28. 实现 strStr()
目录标题算法汇总题目关键点代码1.for+while思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目28. 实现 strStr()关键点1、2、代码1.for+while思路1、for循环遍历haystack;2、for循环中“haystack.length() - i < needle.length()”作为结束标识;3、定义两个指针4、for循环中whi原创 2022-03-20 17:29:04 · 594 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 58 - II. 左旋转字符串
目录标题算法汇总题目代码1.定义两个字符串思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目剑指 Offer 58 - II. 左旋转字符串代码1.定义两个字符串思路代码class Solution { public String reverseLeftWords(String s, int n) { // 考虑不符合的情况 if(s.l原创 2022-03-20 09:48:04 · 111 阅读 · 0 评论 -
【leetcode】151. 颠倒字符串中的单词
目录标题算法汇总题目关键点代码1.split方法思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目151. 颠倒字符串中的单词关键点1、2、代码1.split方法思路1、倒序2、如果遇到"“空字符串则跳过3、最终返回结果需要调用trim()将字符串尾部可能存在的空格去掉。考虑到场景” hello world ",倒序的时候hello后面会多一个空格。代码cla原创 2022-03-18 22:49:56 · 293 阅读 · 0 评论 -
【剑指 Offer 】剑指 Offer 05. 替换空格
目录标题算法汇总题目关键点代码1.for循环思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目剑指 Offer 05. 替换空格关键点1、2、代码1.for循环思路代码class Solution { public String replaceSpace(String s) { if(s == null || s.length() == 0){原创 2022-03-18 20:04:32 · 251 阅读 · 0 评论 -
【leetcode】541. 反转字符串 II
目录标题算法汇总题目关键点代码1.根据题意写代码思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目541. 反转字符串 II关键点1、2、代码1.根据题意写代码思路1、字符串转数组,然后用数组操作,最后再转字符串2、字符串转数组API:s.toCharArray()3、数组转字符串API:new String(chars)代码class Solution {原创 2022-03-18 17:19:19 · 560 阅读 · 0 评论 -
【leetcode】344. 反转字符串
目录标题算法汇总题目题目字眼代码1.双指针思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目344. 反转字符串题目字眼1、原地,使用O(1)的空间复杂度代码1.双指针思路原地,使用O(1)的空间复杂度。 则使用双指针解法。代码class Solution { public void reverseString(char[] s) { if(s =原创 2022-03-13 23:13:26 · 826 阅读 · 0 评论 -
【leetcode】18. 四数之和
目录标题算法汇总题目题目字眼代码1.两个for循环+双指针思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目18. 四数之和题目字眼1、不可重复代码1.两个for循环+双指针思路四数之和,和15.三数之和 (opens new window) 是一个思路,都是使用双指针法, 基本解法就是在15.三数之和 (opens new window)的基础上再套一层for循环。但是原创 2022-03-13 23:00:12 · 1106 阅读 · 0 评论 -
【leetcode】15. 三数之和
目录标题算法汇总题目代码1.for循环+双指针思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目15. 三数之和代码1.for循环+双指针思路以下是该题两个重要题解,需要好好看看:1、随想录题解2、leetcodet题解其实这道题目使用哈希法并不十分合适,因为在去重的操作中有很多细节需要注意,在面试中很难直接写出没有bug的代码。而且使用哈希法 在使用两层for循环的原创 2022-03-08 16:30:41 · 6781 阅读 · 0 评论 -
【leetcode】1. 两数之和
目录标题算法汇总题目代码1.借助字典表hashMap思路代码时间和空间复杂度2.暴力法 - 双重for循环思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目1. 两数之和题目关键点:1、“你可以假设每种输入只会对应一个答案。”2、“数组中同一个元素在答案里不能重复出现”3、“任意顺序返回答案”代码1.借助字典表hashMap思路建议大家做这道题目之前,先做一下这两道:有效的字母异位词(opens new wi原创 2022-03-07 21:12:01 · 285 阅读 · 0 评论 -
【leetcode】202. 快乐数
目录标题算法汇总题目思路 - 关键点代码1.解体方法,如二分法思路代码时间和空间复杂度2.快慢指针 - 未掌握思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目202. 快乐数思路 - 关键点为啥一定不会出现死循环,因为int类型最大值为为2 147 483 647, 所以平方和最大的数是1 999 999 999,平方和为1 + 81*9 = 730。任何数的平方和都在1到730之间,724次循环之内一定有重复的.原创 2022-03-07 20:14:22 · 353 阅读 · 0 评论 -
【leetcode】349. 两个数组的交集
目录标题算法汇总题目代码1.双hashSet思路代码时间和空间复杂度2.暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目349. 两个数组的交集代码1.双hashSet思路代码class Solution { public int[] intersection(int[] nums1, int[] nums2) { if (nums1 == null || nums1.length ==原创 2022-03-06 20:23:31 · 250 阅读 · 1 评论 -
【leetcode】242.有效的字母异位词
目录标题算法汇总题目代码1.解体方法,如二分法思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目242.有效的字母异位词字母异位词解释:简单理解为:两字符串长度相同,字母相同,但顺序不同。代码1.解体方法,如二分法思路代码class Solution { public boolean isAnagram(String s, String t) {原创 2022-03-06 19:58:14 · 6520 阅读 · 0 评论 -
【leetcode】142. 环形链表 II
目录标题算法汇总题目代码1.快慢指针思路判断链表是否有环如果有环,如何找到这个环的入口代码时间和空间复杂度2.哈希表思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目142. 环形链表 II代码1.快慢指针思路代码随想录详细思路讲解这道题目,不仅考察对链表的操作,而且还需要一些数学运算。主要考察两知识点:判断链表是否环如果有环,如何找到这个环的入口判断链表是否有环可以使用快慢指针法,分别定义 fast原创 2022-03-06 17:02:37 · 201 阅读 · 0 评论 -
【leetcode】02.07. 链表相交
目录标题算法汇总题目代码1.双指针法思路代码时间和空间复杂度2.方法2思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目02.07. 链表相交问:[4,1,8,4,5]和[5,0,1,8,4,5]的相交节点为什么不是1啊?答:该题交点不是数值相等,而是指针相等!注意是指针哦!假设指针P1指向[4,1,8,4,5]里的1,地址是001。假设指针P2指向[5,0,1,8,4,5]里的1,地址是002。虽然两个指针指原创 2022-03-06 15:48:59 · 286 阅读 · 0 评论 -
【leetcode】19. 删除链表的倒数第 N 个结点
目录标题算法汇总题目代码1.正常解思路代码时间和空间复杂度2.双指针法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目19. 删除链表的倒数第 N 个结点代码1.正常解思路1、获取节点总个数2、公式: 第(listNodeCount - n + 1)个节点是需要删除的节点, 那么第(listNodeCount - n)节点的next需要跳过下一个节点:node1->node2->node3 则node1原创 2022-03-06 01:38:35 · 89 阅读 · 0 评论 -
【leetcode】24. 两两交换链表中的节点
目录标题算法汇总题目代码1.迭代法思路代码时间和空间复杂度2.递归法思路代码时间和空间复杂度算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目24. 两两交换链表中的节点代码1.迭代法思路定义虚拟头节点。可以通过迭代的方式实现两两交换链表中的节点。创建哑结点 dummyHead,令 dummyHead.next = head。令 temp 表示当前到达的节点,初始时 temp = dummyHead。每次需要交换 temp 后面的两个节原创 2022-03-06 00:51:26 · 116 阅读 · 0 评论 -
【leetcode】206. 反转链表
目录标题算法汇总题目思路代码1.双指针法2.递归法算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目206. 反转链表思路双指针解决;代码1.双指针法如果再定义一个新的链表,实现链表元素的反转,其实这是对内存空间的浪费。其实只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表,如图所示:那么接下来看一看是如何反转的呢?我们拿有示例中的链表来举例,如动画所示:之前链表的头节点是元素1, 反转之后头结点就是元原创 2022-03-05 18:10:53 · 111 阅读 · 0 评论 -
【leetcode】203. 移除链表元素
目录标题算法汇总题目思路代码1.迭代法2.递归算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目203. 移除链表元素思路定义一个虚拟节点。代码1.迭代法/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(in原创 2022-02-22 22:53:38 · 212 阅读 · 0 评论 -
【剑指offer】剑指 Offer 04. 二维数组中的查找
目录标题算法汇总题目思路代码1.从左下角2.暴力法算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目剑指 Offer 04. 二维数组中的查找思路抓住几个关键词有序(升序);代码1.从左下角class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { // 二维数组的行 int row = matrix原创 2022-02-21 14:04:11 · 183 阅读 · 0 评论 -
【leetcode】59.螺旋矩阵II
目录标题算法汇总题目思路代码1.按层模拟算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目59.螺旋矩阵II思路抓住几个关键词顺时针;代码1.按层模拟leetcode解题链接这道题的关键是抓住临界条件。这道题目可以说在面试中出现频率较高的题目,本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。要如何画出这个螺旋排列的正方形矩阵呢?相信很多同学刚开始做这种题目的时候,上来就是一波判断猛如虎。结果运行的时候各种问题,原创 2022-02-20 22:42:13 · 216 阅读 · 0 评论 -
【leetcode】209. 长度最小的子数组
目录标题算法汇总题目思路代码1.暴力方法2.滑动窗口方法算法汇总以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)题目209. 长度最小的子数组思路抓住几个关键词正整数的数组、连续子数组;代码1.暴力方法时间复杂度是n的平方。class Solution { /*** 暴力方法 */ public int minSubArrayLen(int target, int[] nums) { if(nums原创 2022-02-17 23:28:49 · 6873 阅读 · 0 评论 -
【leetcode】977. 有序数组的平方
目录标题题目思路代码1.双指针法2.暴力法题目977. 有序数组的平方思路抓住几个关键词非递减排序;代码1.双指针法思路:数组其实是有序的, 只不过负数平方之后可能成为最大数了。那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。此时可以考虑双指针法了,i指向起始位置,j指向终止位置。定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置。如果A[i] * A[i] < A[j] * A[j] 那么result[k–] = A[j原创 2022-02-16 21:01:39 · 182 阅读 · 0 评论 -
【leetcode】26. 删除有序数组中的重复项
目录标题题目思路代码1.双指针法2.解题方法,如暴力法题目26. 删除有序数组中的重复项思路抓住几个关键词有序(升序)、原地、相对顺序;代码1.双指针法public class Solution_26 { public static void main(String[] args) { int[] nums = {1,1,2}; System.out.println(solution(nums)); } /** * 思路:双指原创 2022-02-16 20:52:53 · 301 阅读 · 0 评论 -
【leetcode】27. 移除元素
目录标题题目思路代码1.解体方法,如二分法2.解题方法,如暴力法题目27. 移除元素思路双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。删除过程如下:双指针法(快慢指针法)在数组和链表的操作中是非常常见的,很多考察数组、链表、字符串等操作的面试题,都使用双指针法。代码1.解体方法,如二分法2.解题方法,如暴力法...原创 2022-02-16 20:13:30 · 382 阅读 · 0 评论 -
【leetcode】35. 搜索插入位置
目录标题题目思路代码1.二分法2.暴力法题目35. 搜索插入位置思路抓住几个关键词有序(升序);代码1.二分法class Solution { public int searchInsert(int[] nums, int target) { int l = 0; int r = nums.length - 1; while(l <= r){ int mid = (l + r) / 2;原创 2022-02-16 16:02:44 · 884 阅读 · 0 评论