LeetCode

代码随想录Day14-Leetcode144. 二叉树的前序遍历,94.二叉树的中序遍历,145.二叉树的后序遍历

递归遍历 前序遍历:根左右 一路俯冲,然后回头 /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val undefined ? 0 : val) * this ......
随想录 随想 Leetcode 代码 Day

LeetCode 1641 统计字典序元音字符串的数目

给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。 字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i + 1] 相同或在 s[i + 1] 之前。 示例 1: 输入:n = 1 输出: ......
元音 字符串 数目 字典 字符

【DFS】LeetCode 110. 平衡二叉树

题目链接 110. 平衡二叉树 思路 一个空树肯定是平衡二叉树,并且一个平衡二叉树的子树也是平衡二叉树。利用这两条性质我们可以推断出代码中含有 root == null -> return true 和 isBalanced(root.left) && isBalanced(root.right)。 ......
LeetCode DFS 110

Leetcode81. 搜索旋转排序数组 II

class Solution { public: bool check(vector<int> &nums,int target,int l,int r)//[l,r]区间查找target { while(l<r) { int mid=(l+r+1)>>1; if(target>=nums[mid] ......
数组 Leetcode 81 II

【单调队列】LeetCode 面试题59 - II. 队列的最大值

题目链接 面试题59 - II. 队列的最大值 思路 可以看参考题解:如何解决 O(1) 复杂度的 API 设计题 一开始想到使用单变量 max 来存储最大值,但是会产生两点问题: 当 max 弹出队列之后,下一个最大值是多少没法知道 如果有多个 max,那么当一个最大值弹出队列之后,队列中还有没有 ......
队列 最大值 LeetCode II

【单调队列】LeetCode 239. 滑动窗口最大值

题目链接 239. 滑动窗口最大值 思路 单调队列的使用方法,将滑动窗口 代码 class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int[] result = new int[nums.length - k + 1 ......
最大值 队列 LeetCode 239

LeetCode 1092 最短公共超序列

LeetCode | 1092.最短公共超序列 给出两个字符串 str1 和 str2,返回同时以 str1 和 str2 作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。 (如果从字符串 T 中删除一些字符(也可能不删除,并且选出的这些字符可以位于 T 中的 任意位置) ......
序列 LeetCode 1092

链表操作-leetcode 92 -反转链表2

题目描述: 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出: ......
leetcode 92

[LeetCode] 2068. Check Whether Two Strings are Almost Equivalent

Two strings word1 and word2 are considered almost equivalent if the differences between the frequencies of each letter from 'a' to 'z' between word1 a ......
Equivalent LeetCode Whether Strings Almost

Leetcode(剑指offer专项训练)——DP专项(3)

分割等和子集 给定一个非空的正整数数组 nums ,请判断能否将这些数字分成元素和相等的两部分。 Link 错误思路 TLS的思路: 记录下所有子集在mp中,但是会造成超时 class Solution { public: bool canPartition(vector<int>& nums) { ......
专项 Leetcode offer

【LeetCode滑动窗口专题】水果成篮 + 最小覆盖子串(hard)

二刷刷到滑动窗口,发现有一些细节和遗漏,在此补充 实际上关于滑动窗口的题还有一题:最小长度的子数组 进入正题 水果成篮 LeetCode904水果成篮 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 ......
盖子 LeetCode 水果 专题 hard

Leetcode 23. 合并 K 个升序链表(分治)

题目链接在这里:合并K个升序链表 对于多个升序链表的合并,如果用C++写的话可以使用优先队列,队列里面存放的都是每一个链表的头结点。 也可以使用分治的方法来做,每次将链表两两合并,这样节约了时间。 这道题巩固了python中递归的应用。 # Definition for singly-linked ......
升序 Leetcode 23

【DP】LeetCode 121. 买卖股票的最佳时机

题目链接 121. 买卖股票的最佳时机 思路 状态转移方程为 $dp[i] = max(0, dp[i - 1], prices[i] - min)$,设置 dp[0] = 0,所以在取最大值的过程中可以省略0,只需要写 dp[i] = Math.max(dp[i - 1], prices[i] - ......
时机 LeetCode 股票 121

LeetCode 1638 统计只差一个字符的子串数目

LeetCode | 1638.统计只差一个字符的子串数目 给你两个字符串 s 和 t ,请你找出 s 中的非空子串的数目,这些子串满足替换 一个不同字符 以后,是 t 串的子串。换言之,请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串对的数目。 比方说, "computer" and  ......
数目 字符 LeetCode 1638

LeetCode 周赛 338,贪心 / 埃氏筛 / 欧氏线性筛 / 前缀和 / 二分查找 / 拓扑排序

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 338 场周赛,你参加了吗?这场周赛覆盖的知识点很多,第四题称得上是近期几场周赛的天花板。 小彭的技术交流群 02 群来了,公众号回复 “加群” 加入我们~ ......
拓扑 前缀 线性 LeetCode 338

代码随想录Day11-Leetcode20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

20. 有效的括号 写过很多遍了,但还是不能秒a /** * @param {string} s * @return {boolean} */ var isValid = function(s) { let stack = [] let obj = {'(':')', '[':']', '{':'} ......
随想录 括号 表达式 字符串 随想

代码随想录Day13-Leetcode239. 滑动窗口最大值,347.前 K 个高频元素,栈和队列总结

239. 滑动窗口最大值 一开始没有思路,暴力了,然后果然超时; 看提示中的单调队列没有特别明白;后面反应过来跟单调栈很像; 也确实很符合本题的情况,一旦队尾出现更大的数,前面更小的数就不需要了, 他们不会成为最大数被弹出后的备选。 值得注意的是本题数次出现区间错误,一开始我的操作居然是删除q[l] ......
随想录 最大值 队列 随想 Leetcode

LeetCode459. 重复的子字符串

题目描述: 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s = "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。 示例 2: 输入: s = "aba" 输出: false 示例 3: 输入: s = "abcabcabca ......
字符串 字符 LeetCode 459

[LeetCode] 1337. The K Weakest Rows in a Matrix 矩阵中战斗力最弱的 K 行

You are given an m x n binary matrix mat of 1's (representing soldiers) and 0's (representing civilians). The soldiers are positioned in front of the ......
矩阵 战斗力 LeetCode Weakest Matrix

【DP】LeetCode 剑指 Offer 46. 把数字翻译成字符串

题目链接 剑指 Offer 46. 把数字翻译成字符串 思路 这个问题与 dp 中的经典问题“跳台阶”问题十分类似,在跳台阶问题中我们是选择跳一个台阶或者两个台阶,而在这个问题中我们是选择再统计一个字符还是再统计两个字符。所以他们的状态转移方程都包含 $dp[i]=dp[i-1]+dp[i-2]$。 ......
字符串 字符 LeetCode 数字 Offer

快慢指针-leetcode141-判断链表中是否有环。

LeetCode #141 题目描述: 给定一个链表,判断链表中是否有环。 如果链表中存在环,则返回 true 。 否则,返回 false 。 进阶:你能用 O(1)(即,常量)内存解决此问题吗? 示例 1: example1 输入:head = [3,2,0,-4], pos = 1 输出:tru ......
快慢 指针 leetcode 141

LeetCode 202 快乐数

LeetCode 202 快乐数 题目跳转链接 具体实现思路如下: 实现一个函数getSum,用来计算一个数各个位上的数字的平方和。具体实现就是对这个数进行除十操作和取余操作,对每个位上的数字平方后累加到总和中。 在一个while循环中,不断调用getSum函数,直到计算出1或者陷入无限循环为止。同 ......
LeetCode 202

Leetcode 349. 两个数组的交集

力扣题目跳转链接 代码随想录 题解 题目要求:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 解法一: unordered_set ......
数组 交集 Leetcode 两个 349

【LeetCode动态规划#05】背包问题的理论分析(基于代码随想录的个人理解,多图)

背包问题 问题描述 背包问题是一系列问题的统称,具体包括:01背包、完全背包、多重背包、分组背包等(仅需掌握前两种,后面的为竞赛级题目) 下面来研究01背包 实际上即使是最经典的01背包,也不会直接出现在题目中,一般是融入到其他的题目背景中再考察 因为是学习原理,所以先跳过最原始的问题模板来学。 0 ......
随想录 随想 背包 LeetCode 理论

LeetCode 142.环形链表II

力扣LeetCode 142.环形链表II 题目跳转链接 解题思路: 代码随想录: 142.环形链表II 从头结点出发一个指针, 从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点。 ......
环形 LeetCode 142

LeetCode 面试题 02.07. 链表相交

面试题 02.07. 链表相交 力扣 题目跳转链接 思路参考:代码随想录 跳转链接 错误代码: class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* f ......
LeetCode 02 07

LeetCode 1574 删除最短子数组使剩余数组有序

LeetCode | 1574.删除最短子数组使剩余数组有序 给你一个整数数组 arr ,请你删除一个子数组(可以为空),使得 arr 中剩下的元素是 非递减 的。 一个子数组指的是原数组中连续的一个子序列。 请你返回满足题目要求的最短子数组的长度。 示例 1: 输入:arr = [1,2,3,10 ......
数组 LeetCode 1574

LeetCode|1032. 字符流

题目链接:1032. 字符流 设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。 例如,words = ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 'a'、'x'、'y' 和 'z' ,你所设计的算法应当可以检测到 "axyz" 的 ......
字符 LeetCode 1032

LeetCode|1574. 删除最短的子数组使剩余数组有序

题目链接:1574. 删除最短的子数组使剩余数组有序 给你一个整数数组 arr ,请你删除一个子数组(可以为空),使得 arr 中剩下的元素是 非递减 的。 一个子数组指的是原数组中连续的一个子序列。 请你返回满足题目要求的最短子数组的长度。 示例 1: 输入:arr = [1,2,3,10,4,2 ......
数组 LeetCode 1574

leetcode1574

双指针法,结果只能从最左边或者最右边或者最左边加上最右边中取 class Solution { public: int findLengthOfShortestSubarray(vector<int>& arr) { int n = arr.size(),res = 1,res2 = 1,res3 ......
leetcode 1574