动态规划应用 一、股票问题(*) 188. 买卖股票的最佳时机 IV 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 labuladong算法秘籍中使用了【三个状态】(三维dp数组) 2022-10-31 leetcode刷题笔记 #leetcode
刷题笔记6-图论 一、图论基础 1、图的表示 图可以分为: 有向无权图 有向有权图 无向无权图 无向有权图 1.1、邻接表 对于邻接表来说 有向/无向:没有影响,在相应结点的邻居结点表中增减即可 有权/无权:对结构有一定影响。 有权:List<int[]>[] graph 其中List中的int[]放两个值,一个是结点值,一个是权重 1234567List< 2022-10-15 leetcode刷题笔记 #leetcode
刷题笔记1-数组/链表 前缀和 使用于 数组固定不变 而且需要频繁求和的情况 相关题目: 1、一维数组的区域和检索 303 2、二维数组的区域和检索 304 3、和为k的子数组个数 560 在求解数组和的时候,最普通的方法就是for循环遍历,复杂度为\(O(N)\)。 但是当需要多次调用求解数组和的方法时,就需要降低其复杂度 使用前缀和可以将复杂度降为\(O(1)\) 使用条件:调用数组求和 2022-09-15 leetcode刷题笔记 #leetcode
刷题笔记4-二叉树 (一) 翻转二叉树 226 二叉树展开为链表 114 填充每个节点的下一个右侧节点指针 116 【翻转二叉树】 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 1234567891011class Solution { public: TreeNode* invertTree(TreeNode* root) { 2022-09-15 leetcode刷题笔记 #leetcode
刷题笔记2-队列/栈 括号问题 有效的括号 20 使括号有效的最小添加 921 平衡括号串的最小插入 1541 【有效括号】 如果只判断一种括号,则不需要使用栈,通过一次遍历即可解决 1234567891011121314bool isValid(string s){ int left = 0; for(char c : s){ if(c == 2022-09-15 leetcode刷题笔记 #leetcode
刷题笔记5-二叉搜索树 (一) 230、二叉搜索树中第K小的元素 538、把二叉搜索树转换为累加树 【二叉搜索树中第K小的元素】 1234567891011121314151617// 遍历二叉树的方式public int kthSmallest(TreeNode root, int k) { kthSmallestTraversal(root, k); return res; 2022-09-15 leetcode刷题笔记 #leetcode
刷题笔记3-设计数据结构 1 LRU 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001 2022-09-07 leetcode刷题笔记 #leetcode