童欧巴

Results 200 issues of 童欧巴

## Description Using Gerrit will always be stuck in the Pushing tags stage because of different commands, which leads to manual interruption every time. **Is the feature request related to...

[原题链接](https://leetcode-cn.com/problems/symmetric-tree/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-66dv/) ## 递归 先明确,所谓“对称”,也就是`两个树的根节点相同`且 - 第一个树的左子树与第二个树的右子树镜像对称。 - 第一个树的右子树与第二个树的左子树镜像对称。 ```js const isSymmetric = function(root) { if (root === null) return true return isEqual(root.left, root.right) // 比较左右子树是否对称 }; const isEqual = function(left,...

简单

[原题链接](https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-dosy/) 说起递归,大家可以看下我之前整理的这篇文章,[你真的懂递归吗?](https://juejin.cn/post/6844904161872461831) ## 题目描述 ``` 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 ``` ## 思路 1.使用递归来解题 2.将两个链表头部较小的一个与剩下的元素合并 3.当两条链表中的一条为空时终止递归 ## 关键点 - 掌握链表数据结构 - 考虑边界情况 ## 复杂度分析 n+m是两条链表的长度 - 时间复杂度:O(m+n) - 空间复杂度:O(m+n) ```js...

简单

[原题链接](https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-qv20/) ## 快慢指针 先明确,删除倒数第 n 个结点,我们需要找到倒数第 n+1 个结点,删除其后继结点即可。 1.添加 prev 哨兵结点,处理边界问题。 2.借助快慢指针,快指针先走 n+1 步,然后快慢指针同步往前走,直到 fast.next 为 null。 3.删除倒数第 n 个结点,返回 prev.next。 ```js const removeNthFromEnd = function(head, n) { let prev...

中等

[原题链接](https://leetcode-cn.com/problems/merge-sorted-array/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-hrab/) ## 逆向双指针 1. 借助双指针,原地修改,从后往前遍历数组,因为 nums1 的空间集中在尾部,从前往后可能会导致原有的数组元素被破坏 2. 初始化 i、j 分别指向初始化元素的末尾位置,k 指向最终的 nums1 数组末尾位置 3. 每次遍历时比较值的大小,进行填充即可 4. 直到 i 和 j 都小于 0 时,遍历结束,返回 nums1 ```js const merge = function(nums1,...

简单

[原题链接](https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-ma1s/) ## 借用 Map 题目要求我们找出数组中任意一个重复的数字,所以我们借助 Map 存储遍历过的数组,当遇到重复的数字时返回即可。 ```js const findRepeatNumber = function(nums) { const map = new Map() for (let i of nums) { if (map.has(i)) return i map.set(i, true)...

简单

[原题链接](https://leetcode-cn.com/problems/validate-binary-search-tree/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-es3p/) ## 中序遍历 二叉搜索树需要满足以下三个条件: - 节点的左子树只包含 小于 当前节点的数。 - 节点的右子树只包含 大于 当前节点的数。 - 所有左子树和右子树自身必须也是二叉搜索树。 1. 二叉搜索树在中序遍历时得到的序列一定是升序的 2. 进行中序遍历,判断当前节点是否大于前一个节点 3. 如果比前一个大,说明满足,则继续遍历,否则直接返回 false ### 递归 ```js const isValidBST = function(root) { let...

简单

[原题链接](https://leetcode-cn.com/problems/majority-element/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-jrvx/) ## 摩尔投票算法 摩尔投票算法有点“天天爱消除”的感觉,证明过程详见官方题解。 先明确,所谓多数元素就是该元素的个数超过数组长度的一半。 所以我们可以让不同的数字相互抵消,最后剩下的数字就是多数元素。 ```js const majorityElement = function(nums) { let target = 0 let count = 0 for (let i = 0; i < nums.length; i++) {...

简单

[原题链接](https://leetcode-cn.com/problems/intersection-of-two-linked-lists/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-x5sc/) ## 双指针 1. 借助双指针分别遍历链表 A 和 B。 2. 遍历完自己后再将头指针指向另一个链表头部,继续遍历。 3. 如果存在交点,则一定会相遇。 ```js const getIntersectionNode = function(headA, headB) { if (headA === null || headB === null) { return null...

简单