随笔分类 - 最优化问题
摘要:2020-04-27 21:15:58 问题描述: 我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证不存在超过2个相邻的柱子颜色相同,求有多少种染色方案。 样例 例 1: 输入: n=3, k=2 输出: 6 Explanation: post 1, post 2, pos
阅读全文
摘要:2020-04-13 11:38:31 问题描述: 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例: 输入: 13输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。 问题求解: 可以使用数位dp进行高效求解。 dp[pos][c
阅读全文
摘要:2020-04-12 20:44:30 问题描述: 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。 给你网格图的行数 n 。 请你返回给 grid 涂色的方案数。由于答案可能会非常
阅读全文
摘要:2020-04-11 16:28:43 问题描述: 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。 你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比
阅读全文
摘要:2020-04-08 08:05:15 问题描述: 蒜国有 n 座城市,编号从 1 到 n,城市间有 n−1 条道路,且保证任意两座城市之间是连通的。每一座城市有一定数量的钻石。 蒜头君想在蒜国搜集钻石。他从城市 1 出发,每天他可以通过城市之间道路开车到另外的城市。当蒜头第一次到一个城市的时候,他
阅读全文
摘要:2020-04-08 07:45:18 问题描述: 给定一个n * m个的矩阵,矩阵的每个位置有一定数量的硬币,你从(0,0)位置出发,每次只能往右或者往下走,当他经过某个格子的时候,可以得到这个格子上的所有硬币,当它走到第(n-1,M-1)位置时游戏结束,在游戏开始前,你有ķ次机会,可以交换某两个
阅读全文
摘要:2020-04-07 16:52:12 问题描述: 给一有向图,每一条边用一个 三元组 表示, 比如 [u, v, w] 代表权值为 w 的从 u 到 v 的一条边. 计算出保证每个点的权重相等需要添加的最少的边数. 也就是说, 指向这一点的边权重总和等于这个点指向其他点的边权重之和. 样例 样例1
阅读全文
摘要:2020-04-04 12:18:00 问题描述: 给出1-n的两个排列P1和P2,求它们的最长公共子序列。请将复杂度控制在O(nlogn)。 样例 样例 1: 输入:[3,2,1,4,5],[1,2,3,4,5] 输出:3 解释:最长公共子序列为[1,4,5]。 样例 2: 输入:[6,9,4,2
阅读全文
摘要:2020-03-24 23:06:02 问题描述: 现在,你有n个任务需要做。每个任务都有对应的奖励val,这意味着你只要完成了这个任务,就能获得对应的奖励。每个任务也有一个完成期限date,你只有在期限内(<=date[i])完成了这个任务,才能获得奖励。每个任务只能被完成一次,一天最多只能做一个
阅读全文
摘要:2020-03-24 18:23:00 问题描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC
阅读全文
摘要:2020-03-24 17:49:58 198. 打家劫舍 问题描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组
阅读全文
摘要:2020-03-15 22:00:39 问题描述: 有 N 名工人。 第 i 名工人的工作质量为 quality[i] ,其最低期望工资为 wage[i] 。 现在我们想雇佣 K 名工人组成一个工资组。在雇佣 一组 K 名工人时,我们必须按照下述规则向他们支付工资: 对工资组中的每名工人,应当按其工
阅读全文
摘要:2020-03-11 18:19:00 问题描述: 给出一个股票n天的价格,每天最多只能进行一次交易,可以选择买入一支股票或卖出一支股票或放弃交易,输出能够达到的最大利润值 样例 样例 1: 给出 `a = [1,2,10,9]`, 返回 `16` 输入: [1,2,10,9] 输出: 16 解释:
阅读全文
摘要:2020-03-10 22:00:52 问题描述: 在一根无限长的数轴上,你站在0的位置。终点在target的位置。 每次你可以选择向左或向右移动。第 n 次移动(从 1 开始),可以走 n 步。 返回到达终点需要的最小移动次数。 示例 1: 输入: target = 3输出: 2解释:第一次移动,
阅读全文
摘要:2020-03-10 17:22:21 问题描述: 给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命
阅读全文
摘要:2020-03-03 22:55:08 问题描述: 给定一个字符串数组 A,找到以 A 中每个字符串作为子字符串的最短字符串。 我们可以假设 A 中没有字符串是 A 中另一个字符串的子字符串。 示例 1: 输入:["alex","loves","leetcode"]输出:"alexlovesleet
阅读全文
摘要:2020-03-01 23:08:51 问题描述: 你有一块棋盘,棋盘上有一些格子已经坏掉了。你还有无穷块大小为1 * 2的多米诺骨牌,你想把这些骨牌不重叠地覆盖在完好的格子上,请找出你最多能在棋盘上放多少块骨牌?这些骨牌可以横着或者竖着放。 输入:n, m代表棋盘的大小;broken是一个b *
阅读全文
摘要:2020-02-29 22:18:12 问题描述: 问题求解: 解法一:DFS 将原问题转化成图的问题,使用dfs去遍历得到解。 核心思想就是每次遍历到一个点,不仅将其标记为使用,还要将其周围的节点标记为访问过,避免之后遍历到矛盾的节点。 int res = 0; public int maxStu
阅读全文
摘要:2020-02-18 20:57:58 一、Maximum Subarray 经典的动态规划问题。 问题描述: 问题求解: public int maxSubArray(int[] nums) { int res = nums[0]; int n = nums.length; int[] dp =
阅读全文
摘要:2020-02-16 16:24:19 问题描述: 问题求解: 看起来就像是sort + 贪心,但是具体如何做呢? 实际上本题是最大相容区间的变种题,在最大相容区间里,我们按照结束时间对interval进行排序,每次选择结束时间最早的进行安排。 这里其实也是一样,对每一天,我们在当天所有的event
阅读全文

浙公网安备 33010602011771号