摘要:
代码随想录_动态规划理论基础 对于动态规划问题,将拆解为如下五步曲。 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。 阅读全文
摘要:
题目跳转链接 有暴力解法和窗口滑动法,暴力解法是否值得掌握 暴力解法显然是一种简单而直观的解法,其时间复杂度为 O(N^2),空间复杂度为 O(1)。如果输入规模不大,暴力解法可能也可以接受。 但在面对规模较大,或对性能要求较高的场景下,暴力解法就会因其高时间复杂度而表现较差。此时就需要使用其他算法 阅读全文
摘要:
LeetCode 27 移除元素 题目跳转链接 ####双指针法 移出元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不 阅读全文
摘要:
学习写法 力扣 Krahets 剑指 Offer 66. 构建乘积数组(表格分区,清晰图解) 两个for循环。 上下两个三角 class Solution { public: vector<int> multiply(const vector<int>& A) { int len=A.size(); 阅读全文
摘要:
参考学习题解: 剑指 Offer 07. 重建二叉树(分治算法,清晰图解)作者:Krahets 解题思路: 前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。 中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。 以题目示例为例: 前序遍历划分 [ 3 | 阅读全文
摘要:
####分治算法 分治算法是一种高效的算法思想,它将问题分解成更小的子问题,通过解决子问题来解决原始问题。它的核心思想是将问题分解成若干个规模更小但结构相同的子问题,并且通过递归的方式解决这些子问题,最终将子问题的解合并起来得到原问题的解。 通常情况下,分治算法包含三个步骤: 分解:将原问题分解成若 阅读全文
摘要:
牛客 题目跳转链接 代码随想录 双指针解法 时间复杂度:O(n) 空间复杂度:O(1) class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return str 阅读全文
摘要:
Leetcode 704 二分查找 力扣(LeetCode)题目跳转链接 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1, 阅读全文
摘要:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 数据范围 二维数组中元素个数范围 [0,1000] 样例 输入数组: [ [1,2,8,9], [2,4,9,12], [4,7, 阅读全文
摘要:
Q:游戏情节和“游戏设定”相比,是不是游戏设定的包含范围更广阔一些? A:是的,游戏情节和游戏设定是两个不同的概念,游戏设定的范围比游戏情节更广泛一些。 游戏设定通常指游戏中的背景、设定、角色等各种元素的构建,包括游戏的世界观、游戏的规则、游戏角色的设定、游戏的背景故事等等。它是游戏中的一个重要部分 阅读全文