LC 769. 最多能完成排序的块 题目描述这是 LeetCode 上的 769. 最多能完成排序的块 ,难度为 中等。 给定一个长度为 n 的整数数组 arr ,它表示在 $[0, n - 1]$ 范围内的整数的排列。 我们将 arr 分割成若干 块 (即分区),并对每个块单独排序。将它们连接起来后,使得连接的结果和按升序排序后的原数组相同。 返回数组能分成的最多块数量。 示例 1:1234567输入: arr = [4,3,2, 2022-10-13 模拟
LC 817. 链表组件 题目描述这是 LeetCode 上的 817. 链表组件 ,难度为 中等。 给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums,该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 nums 中)构成的集合。 示例 1: 12345输入: head = [0,1,2,3], 2022-10-12 哈希表 模拟 链表
LC 1790. 仅执行一次字符串交换能否使两个字符串相等 题目描述这是 LeetCode 上的 1790. 仅执行一次字符串交换能否使两个字符串相等 ,难度为 简单。 给你长度相等的两个字符串 s1 和 s2 。一次 字符串交换 操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。 如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回 true ;否则,返回 false 。 示例 1:12345 2022-10-11 模拟
LC 801. 使序列递增的最小交换次数 题目描述这是 LeetCode 上的 801. 使序列递增的最小交换次数 ,难度为 困难。 我们有两个长度相等且不为空的整型数组 nums1 和 nums2。 在一次操作中,我们可以交换 $nums1[i]$ 和 $nums2[i]$ 的元素。 例如,如果 $nums1 = [1,2,3,8]$ ,$nums2 =[5,6,7,4]$ ,你可以交换 $i = 3$ 处的元素,得到 $nums1 = 2022-10-10 动态规划 状态机 DP
LC 215. 数组中的第K个最大元素 题目描述这是 LeetCode 上的 215. 数组中的第K个最大元素 ,难度为 中等。 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 $O(n)$ 的算法解决此问题。 示例 1:123输入: [3,2,1,5,6,4], k = 2输出: 5示例 2:123 2022-10-09 二分 优先队列(堆) 树状数组 快速选择
LC 856. 括号的分数 题目描述这是 LeetCode 上的 856. 括号的分数 ,难度为 中等。 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。 示例 1:123输入: "()"输出: 1示例 2:123输入: "(())" 2022-10-09 栈
LC 142. 环形链表 II 题目描述这是 LeetCode 上的 142. 环形链表 II ,难度为 中等。 给定一个链表的头节点 head,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该 2022-10-08 双指针 链表 快慢指针
LC 870. 优势洗牌 题目描述这是 LeetCode 上的 870. 优势洗牌 ,难度为 中等。 给定两个大小相等的数组 nums1 和 nums2,nums1 相对于 nums 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。 返回 nums1 的任意排列,使其相对于 nums2 的优势最大化。 示例 1:123输入:nums1 = [2,7,11,15], nums2 = 2022-10-08 哈希表 双指针 贪心 排序 红黑树
LC 927. 三等分 题目描述这是 LeetCode 上的 927. 三等分 ,难度为 困难。 给定一个由 0 和 1 组成的数组 arr,将数组分成 3 个非空的部分 ,使得所有这些部分表示相同的二进制值。 如果可以做到,请返回任何 [i, j],其中 i+1 < j,这样一来: arr[0], arr[1], ..., arr[i] 为第一部分; arr[i + 1], arr[i + 2], ..., 2022-10-06 模拟
LC 141. 环形链表 题目描述这是 LeetCode 上的 141. 环形链表 ,难度为 简单。 给你一个链表的头节点 head,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 $0$ 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。 如果链表中 2022-10-05 双指针 链表 快慢指针
LC 287. 寻找重复数 题目描述这是 LeetCode 上的 287. 寻找重复数 ,难度为 中等。 给定一个包含 n + 1 个整数的数组 nums,其数字都在 $[1, n]$ 范围内(包括 $1$ 和 $n$),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常量级 $O(1)$ 的额外空间。 示例 1:123输入:n 2022-10-05 桶排序 原地哈希
LC 811. 子域名访问计数 题目描述这是 LeetCode 上的 811. 子域名访问计数 ,难度为 中等。 网站域名 "discuss.leetcode.com" 由多个子域名组成。顶级域名为 "com" ,二级域名为 "leetcode.com" ,最低一级为 "discuss.leetcode.com" 。 当访问域名 "disc 2022-10-05 哈希表 模拟
LC 921. 使括号有效的最少添加 题目描述这是 LeetCode 上的 921. 使括号有效的最少添加 ,难度为 中等。 只有满足下面几点之一,括号字符串才是有效的: 它是一个空字符串,或者 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者 它可以被写作 (A),其中 A 是有效字符串。 给定一个括号字符串 s ,移动 N 次,你就可以在字符串的任何位置插入一个括号。 例如,如果 s = & 2022-10-04 模拟
LC 1784. 检查二进制字符串字段 题目描述这是 LeetCode 上的 1784. 检查二进制字符串字段 ,难度为 简单。 给你一个二进制字符串 s ,该字符串 不含前导零 。 如果 s 包含 零个或一个由连续的 '1' 组成的字段 ,返回 true。否则,返回 false。 如果 s 中 由连续若干个 '1' 组成的字段 数量不超过 1,返回 true。否则,返回 false。 示例 1:1234 2022-10-03 模拟
LC 777. 在LR字符串中交换相邻字符 题目描述这是 LeetCode 上的 777. 在LR字符串中交换相邻字符 ,难度为 中等。 在一个由 'L' ,'R' 和 'X' 三个字符组成的字符串(例如 "RXXLRXRXL")中进行移动操作。 一次移动操作指用一个 "LX" 替换一个 "XL",或者用一个 "XR&quo 2022-10-02 双指针