LC 879. 盈利计划 题目描述这是 LeetCode 上的 879. 盈利计划 ,难度为 困难。 集团里有 n 名员工,他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润,它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作,就不能参与另一项工作。 工作的任何至少产生 minProfit 利润的子集称为 盈利计划 。并且工作的成员总数最多为 n 。 有多少种计划可以选 2021-06-09 动态规划 容斥原理 数学 背包问题 多维背包
LC 1049. 最后一块石头的重量 II 题目描述这是 LeetCode 上的 1049. 最后一块石头的重量 II ,难度为 中等。 有一堆石头,用整数数组 stones 表示。 其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y 2021-06-08 动态规划 数学 背包问题 01 背包
LC 494. 目标和 题目描述这是 LeetCode 上的 494. 目标和 ,难度为 中等。 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘+’ 或 ‘-‘ ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-‘ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果 2021-06-07 DFS 01 背包 记忆化搜索 背包 DP
LC 474. 一和零 题目描述这是 LeetCode 上的 474. 一和零 ,难度为 中等。 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1:1234输入:strs = ["10", "0001 2021-06-06 动态规划 背包问题 01 背包 多维背包
LC 134. 加油站 题目描述这是 LeetCode 上的 134. 加油站 ,难度为 中等。 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。 说明: 如果题目有解,该 2021-06-05 DFA KMP
LC 203. 移除链表元素 题目描述这是 LeetCode 上的 203. 移除链表元素 ,难度为 简单。 给你一个链表的头节点 head 和一个整数 val,请你删除链表中所有满足 Node.val = val 的节点,并返回 新的头节点 。 示例 1: 123输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5] 示例 2:123输入:head = [], val = 1输出: 2021-06-05 链表
LC 160. 相交链表 题目描述这是 LeetCode 上的 160. 相交链表 ,难度为 简单。 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 12345输入:intersectVal 2021-06-04 栈 链表
LC 460. LFU 缓存 题目描述这是 LeetCode 上的 460. LFU 缓存 ,难度为 困难。 请你为 最不经常使用(LFU) 缓存算法设计并实现数据结构。 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象 int get(int key) - 如果键存在于缓存中,则获取键的值,否则返回 -1。 void put(int key, i 2021-06-03 链表 设计 双向链表
LC 525. 连续数组 题目描述这是 LeetCode 上的 525. 连续数组 ,难度为 中等。 给定一个二进制数组 nums , 找到含有相同数量的 $0$ 和 $1$ 的最长连续子数组,并返回该子数组的长度。 示例 1:12345输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:12345输入: nums = [0,1,0]输出: 2说明: [0, 1] 2021-06-03 哈希表 前缀和
LC 523. 连续的子数组和 题目描述这是 LeetCode 上的 523. 连续的子数组和 ,难度为 中等。 给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组: 子数组大小至少为 2 ,且 子数组元素总和为 k 的倍数。 如果存在,返回 true;否则,返回 false。 如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数 2021-06-02 前缀和
LC 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗? 题目描述这是 LeetCode 上的 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗? ,难度为 中等。 给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数组 queries ,其中 queries[i] = [favoriteTypei, favoriteDayi, dailyCapi 2021-06-01 前缀和
LC 146. LRU 缓存机制 题目描述这是 LeetCode 上的 146. LRU 缓存机制 ,难度为 中等。 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 $- 2021-05-31 哈希表 链表 设计
LC 面试题 16.25. LRU 缓存 题目描述这是 LeetCode 上的 面试题 16.25. LRU 缓存) ,难度为 中等。 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则 2021-05-31 哈希表 链表 设计
LC 342. 4的幂 题目描述这是 LeetCode 上的 342. 4的幂 ,难度为 简单。 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == $4^x$ 示例 1:12输入:n = 16输出:true示例 2:12输入:n = 5输出:false示例 3:12输入:n = 1输出:true 提示 2021-05-31 数学 位运算
LC 231. 2 的幂 题目描述这是 LeetCode 上的 231. 2 的幂 ,难度为 简单。 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n == $2^x$ ,则认为 n 是 2 的幂次方。 示例 1:123输入:n = 1输出:true解释:20 = 1示例 2:123输入:n = 16输出:true解释:24 = 16 2021-05-30 数学 位运算