摘要:
1、最长公共子序列 对于两个子序列 S1 和 S2,找出它们最长的公共子序列。 定义一个二维数组 dp 用来存储最长公共子序列的长度,其中 dp[i][j] 表示 S1 的前 i 个字符与 S2 的前 j 个字符最长公共子序列的长度。考虑 S1i 与 S2j 值是否相等,分为两种情况: 当 S1i= 阅读全文
posted @ 2020-02-15 21:17
swiftAlien
阅读(352)
评论(0)
推荐(0)
摘要:
基本思想: 300. 最长上升子序列 M 给定一个无序的整数数组,找到其中最长上升子序列的长度。 通用方法: class Solution { public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); if (n == 0) 阅读全文
posted @ 2020-02-15 20:25
swiftAlien
阅读(175)
评论(0)
推荐(0)
摘要:
2020-02-15 343. 整数拆分 M(乘积最大化) 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 max函数可以使用initializer_list,用来求多个数的最值; class Solution { public: int i 阅读全文
posted @ 2020-02-15 13:54
swiftAlien
阅读(163)
评论(0)
推荐(0)
摘要:
2020-02-15 303. 区域和检索 - 数组不可变 E 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 一维前缀和: class NumArray { public: vector<long long> dp; NumArra 阅读全文
posted @ 2020-02-15 11:35
swiftAlien
阅读(177)
评论(0)
推荐(0)
摘要:
64. 最小路径和 E 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 (最简单的模板题) class Solution { public: int minPathSum(vector<vector<in 阅读全文
posted @ 2020-02-15 10:21
swiftAlien
阅读(193)
评论(0)
推荐(0)

浙公网安备 33010602011771号