随笔分类 - LeetCode刷题
该分类用于记录LeetCode刷题记录,按照代码随想录的题解顺序进行刷题,主要参考的是代码随想录的解题思路,在此表示感谢~
摘要:二叉树 94. 二叉树的中序遍历 104. 二叉树的最大深度 226. 翻转二叉树 101. 对称二叉树 543. 二叉树的直径 102. 二叉树的层序遍历 108. 将有序数组转换为二叉搜索树 98. 验证二叉搜索树 230. 二叉搜索树中第 K 小的元素 199. 二叉树的右视图 114. 二叉
阅读全文
摘要:链表 160. 相交链表 206. 反转链表 234. 回文链表 141. 环形链表 142. 环形链表 II 21. 合并两个有序链表 2. 两数相加 19. 删除链表的倒数第 N 个结点 25. K 个一组翻转链表 138. 随机链表的复制 148. 排序链表 23. 合并 K 个升序链表 14
阅读全文
摘要:哈希 1. 两数之和 49. 字母异位词分组 128. 最长连续序列 1. 两数之和 方法一:HashMap 在元素放入数组之前就进行判断,保证了不会取出同一个元素的情况,,例如[3,3],如果先将数组中的所有元素放入hashMap,再判断是否存在,则返回结果为[1,1],不符合题意。 class
阅读全文
摘要:普通数组 53. 最大子数组和 56. 合并区间 189. 轮转数组 238. 除自身以外数组的乘积 41. 缺失的第一个正数 53. 最大子数组和 方法一:暴力解 依次遍历数组中的每个子数组,进而判断res的最大值 超时 class Solution { public int maxSubArra
阅读全文
摘要:题目:242. 有效的字母异位词 解题思路 依次遍历s和t,将s中出现的字符依次填入哈希表中,出现一次则加1; 将t中出现的字符依次从哈希表中删去,出现一次则减1; 最后判断哈希表中是否有小于0的元素,若小于0则返回false,否则返回true。 C代码实现 bool isAnagram(char
阅读全文
摘要:题目:59. 螺旋矩阵 II 解题思路 手动模拟螺旋矩阵,分别实现四个方向的代码,将数组依次填入数组中即可 需要注意的是,如果n为奇数,说明最后只剩下中间的一个位置,将最后一个数直接填入即可;若n为偶数,则正好能够遍历n/2遍 class Solution { public int[][] gene
阅读全文
摘要:题目:209. 长度最小的子数组 解题思路: 初始化最小长度,设置为最大值,当最小长度变小时,该值更新 设置left和right指针,left指针用于记录左边界,当求和sum大于target时,左指针右移;right指针记录右边界,当求和sum小于target时,右指针右移,继续寻找符合要求的子字符
阅读全文
摘要:题目:977. 有序数组的平方 解题思路: 分析题目,左侧负数的平方可能超过右侧正数的平方,所以考虑使用双指针法,从左右向中间遍历最大值 将遍历结果放入新创建的数组中,返回数组 由于该问题的传入数组大小不确定,故只能使用动态数组创建方法,malloc方法 导入<math.h>,使用abs绝对值比较函
阅读全文
摘要:题目:27. 移除元素 解题思路 给定一个数组,以及一个需要删除的值;要求在 O(1) 的空间复杂度中完成 可考虑采用快慢指针的方式,left 用于记录当前需要进行替换的元素,right 指针用于遍历整个数组 当 right 指针所指的值是待删除元素时,那么 right 右移,left 不动即可 若
阅读全文
摘要:数组 【LeetCode】704. 二分查找 【LeetCode】27. 移除元素
阅读全文
摘要:题目:704. 二分查找 解题思路 思路:给定一个 nums 数组,注意数组是升序排列的;那么,找到当前 target 元素是否存在于数组之中,可采用二分法查找 注意:此处定义该数组区间定义:【左闭右闭】/【左闭右开】 使用left指向数组头,right 指针指向数组尾, mid 用于计算二分查找的
阅读全文