【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
【LeetCode刷题】Day 15 题目1:742.寻找数组的中心下标思路分析:思路1:前缀和思想 题目2:238.除自身以外数组的乘积思路分析思路1:前缀和思想 题目1:742.寻找数组的中心下标 思路分析: 其实题干说的很明白了,就是在表述,某个位置的前半部分数组和与后半部分数组和的结果相同,就是中心下标。 这里明显就是前缀和来求解。 思路1:前缀和思想 前半部分的和与后半部分的和分别用:前缀...
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】Day 11 专题三:二分查找模板:1. 朴素二分模板:2. 区间左值模板:3. 区间右值模板: 题目1:704. 二分查找思路分析:思路1:朴素二分查找O(logN) 题目2:34. 在排序数组中查找元素的第一个和最后一个位置思路分析:思路1:区间左右值二分查找 O(logN) 专题三:二分查找模板: 根据题干分析,根据二分性,划分区间,得出二分最重要的几个要点: 判断条件...
【C++刷题】优选算法——递归第四辑
记忆化搜索篇 什么是记忆化搜索? 带 备忘录 的递归 如何实现记忆化搜索? a.添加一个备忘录 b.每次递归返回的时候,把结果放到备忘录里c.每次递归进入的时候,先查看一下备忘录 记忆化搜索 vs 常规动态规划: 相同点: 都是暴力解法(暴搜)优化方式都是把已经计算出的结果存起来 不同点: 记忆化搜索是递归形式常规动态规划是递推(循环)形式 问题: 所有的递归(暴搜、深搜),都能改成记忆化搜索吗? ...
【C++刷题】优选算法——递归第三辑
floodfill篇 图像渲染 unordered_multimap<int, int> direction = { {0, 1}, {0, -1}, {1, 0}, {-1, 0}};void dfs(vector<vector<int>>& image, int sr, int sc, int color, int val){ image[sr][sc] = color; for(auto...
【C++刷题】优选算法——动态规划第六辑
【模板】01背包 状态表示: dp1[i][j]: 表示从前i个物品中挑选总体积不超过j的物品,在所有的选法中,能挑选出的最大价值 dp2[i][j]: 表示从前i个物品中挑选总体积正好等于j的物品,在所有的选法中,能挑选出的最大价值优化: 利用滚动数组做空间上的优化 int main(){ int n, V; // n 物品个数 V 背包体积 cin >> n >> V; int v, w; ...
【代码随想录刷题记录】LeetCode209长度最小的子数组
题目地址 1. 思路 1.1 基本思路及代码实现 按照卡尔老师的思路,这个题目涉及到了一个重要的知识:滑动窗口,(卡尔老师的图片演示比我做的好,就看卡尔老师的图片演示就行,其中我的fast指针对应卡尔老师的j指针,我的slow指针对应卡尔老师的i指针),所谓滑动窗口和快慢指针差不多,我最开始的想法是这样的:用快慢指针slow和fast遍历这个数组,用一个整型变量sum保存每次子数组的求和结果,为了能...
【Leetcode】vector刷题
🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 这道题很简单,我们只需要遍历一遍数组,利用异或操作的性质(一个数与自身异或结果为0,任何数与0异或还是其本身) class Solution {public: int sing...
【C语言必刷题】7. 百钱百鸡
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 文章目录 1. 题目描述2. 解题思路3. 代码: 1. 题目描述 百鸡百钱是我国古代数学家张丘建在《算经》一书中提出的数学问题...
工程师每日刷题-7
(1)final和override的作用?final为什么能提高代码执行效率? override:保证在派生类中声明的重载函数,与基类的虚函数有相同的签名,作用就是用于编译期代码检查。 final:阻止类的进一步派生和虚函数的进一步重写,同时也是一种名为去虚拟化的优化技巧,相当于把运行期多态转换为了编译期多态,提高了执行效率。 (2)static的3种作用? 修饰局部变量,这意味着该变量只被初始化一...
【C++刷题】优选算法——动态规划第五辑
最长公共子序列 状态表示: 选取第一个字符串[0,i]区间和第二个字符串[0,j]区间作为研究对象 dp[i][j]: 表示s1的[0,i]区间和s2的[0,j]区间内的所有子序列中,最长公共子序列的长度状态转移方程: text1[i] == text2[j]: dp[i][j] = dp[i-1][j-1] + 1; text1[i] != text2[j]: dp[i][j] = max(dp...