1.9k 2 分钟

# 信息与信息化 信息是一种普遍联系的形式 # 信息(掌握) # 定义 信息是用来消除随机不定性的东西(香农) 单位:比特(bit) # 特征与质量 特征 客观性 普遍性 无限性 动态性 相对性 依附性 变换性 传体系 层次性 系统性 转换性 质量 精确性 完整性 可靠性 技术性 经济学 可验证性 安全性 应对不同场合,信息的侧重面也不一样。 # 信息系统 #...
1.1k 1 分钟

# 最长上升子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 class Solution {public: int lengthOfLIS(vector<int>& nums) {...
2.1k 2 分钟

# 打家劫舍 1 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 # 分析 1 确定 dp 数组(dp table)以及下标的含义 dp [i]:考虑下标 i(包括...
950 1 分钟

# 题目 有 N 种物品和一个容量为 V 的背包。第 i 种物品最多有 Mi 件可用,每件耗费的空间是 Ci ,价值是 Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。 # 分析 多重背包和 01 背包是非常像的, 为什么和 01 背包像呢? 每件物品最多有 Mi 件可用,把 Mi 件摊开,其实就是一个 01 背包问题了。 例如: 背包最大重量为 10。 物品为: 重量 价值 数量 物品 0 1 15 2 物品 1 3 20 3 物品 2 4 30 2 问背包能背的物品最大价值是多少? 和如下情况有区别么? 重量 价值 数量 物品...
1.4k 1 分钟

# 题目 有 N 件物品和一个最多能背重量为 W 的背包。第 i 件物品的重量是 weight [i],得到的价值是 value [i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 # 分析 完全背包和 01 背包问题唯一不同的地方就是,每种物品有无限件。 01 背包和完全背包唯一不同就是体现在遍历顺序上 首先再回顾一下 01 背包的核心代码 for(int i = 0; i < weight.size(); i++) { // 遍历物品 for(int j = bagWeight; j >=...
2.9k 3 分钟

# 题目 有 n 件物品和一个最多能背重量为 w 的背包。第 i 件物品的重量是 weight [i],得到的价值是 value [i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 # 分析 # 二维 dp 数组 01 背包 1 确定 dp 数组以及下标含义 对于背包问题,有一种写法, 是使用二维数组,即 dp【i】【j】 表示从下标为 [0-i] 的物品里任意取,放进容量为 j 的背包,价值总和最大是多少。 2 确定递推公式 dp [i] [j] 有两种情况 第一种 不放物品 i:由 dp [i - 1] [j] 推出,即背包容量为 j,里面不放物品 i...
626 1 分钟

# 题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n = 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 # 分析 动态规划五部曲 1 确定 dp 数组及下标的含义 dp [i]:分拆数字 i,得到最大乘积和 dp [i] 2 确定递推公式 dp[i] = max({dp[i], (i - j) * j, dp[i - j] * j}); 3 dp 的初始化 dp[2] = 1 4 确定遍历顺序 dp [i] 是依靠 dp [i - j]...
678 1 分钟

# 题目 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给定 n ,请计算 F(n) 。 示例 1: 输入:n = 2 输出:1 解释:F(2) = F(1) + F(0) = 1 + 0 = 1 509. 斐波那契数 - 力扣(LeetCode) # 分析 动规五部曲: 1 确定 dp 数组及下标的含义 dp【i】的定义为:第 i 个数的斐波那契数的值是 dp【i】 2...
1.2k 1 分钟

# 题目 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10],[15,18]] 解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入:intervals = [[1,4],[4,5]] 输出:[[1,5]] 解释:区间 [1,4] 和 [4,5]...