day41专题

学习记录——day41 运算符重载

运算符默认不支持自定义的类,但是可以通过运算符重载扩展运算符的属于范围         运算符重载,也是实现泛型编程的一种,能够实现“一符多用”,可以使用运算符重载来完成对象与对象之间的符号运算         注:运算符重载仅针对类对象 不影响基础数据类型 一、运算符重载函数 1)函数名:统一为 operator# //这里的#表示要被重载的运算符 2)参数:根据运算符

学习记录——day41 继承

学习记录——day39 C++ Class this指针-CSDN博客         面向对象三大特征:封装、继承、多态         基于一个已有的类,来创建出一个新类的过程叫做继承,原类称为父类,新类称为自类/派生类。主要用于提高代码的复用性 继承格式 class 子类名 :继承方式  class 父类名1, class 父类2。。。 {     子类扩展的成员;

代码随想录训练营 Day41打卡 动态规划 part08 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机II 123. 买卖股票的最佳时机III

代码随想录训练营 Day41打卡 动态规划 part08 一、力扣121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

day41.动态规划

一.动态规划 121.买卖股票的最佳时机I 思路:dp[i][1] 表示第i天不持有股票所得最多现金  dp[i][0] 表示第i天持有股票所得最多现金 class Solution {public:int maxProfit(vector<int>& prices) {int len = prices.size();if (len == 0) return 0;vector<vector

day41| 01背包问题一 01背包问题二(滚动数组篇)416. 分割等和子集 1049.最后一块石头的重量II 494. 目标和 474. 一和零

文章目录 背景介绍01背包问题一思路方法一方法二 01背包问题二(滚动数组篇)思路方法一方法二 416. 分割等和子集思路方法一 1049.最后一块石头的重量II思路方法一 494. 目标和思路方法方法二 回溯法 474. 一和零思路方法 总结 由于笔试的时候会判重,而这里面的代码都是我自己写的,所以以后的博客都要求会员才能看,感谢理解 背景介绍 01背包问题一 01

day41--Redis(三)高级篇之最佳实践

Redis高级篇之最佳实践 今日内容 Redis键值设计批处理优化服务端优化集群最佳实践 1、Redis键值设计 1.1、优雅的key结构 Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id]长度不超过44字节不包含特殊字符 例如:我们的登录业务,保存用户信息,其key可以设计成如下格式: 这样设计的好处:

代码随想录算法训练营Day41|背包问题、分割等和子集

背包问题 二维 46. 携带研究材料(第六期模拟笔试) (kamacoder.com) dp数组有两维,横轴表示背包重量j(0-j),纵轴表示不同物品(0-i),dp[i][j]即表示从下标为[0-i]的物品里任意取,对于重量为j的背包,最大的价值是多少。dp[i][j]的对物品i来说只有2种情况,物品i未放入或者放入,如果物品i未放入,由dp[i-1][j]可以推出,即背包容量为j,里面不

算法题day41(补5.27日卡:动态规划01)

一、动态规划基础知识:在动态规划中每一个状态一定是由上一个状态推导出来的。 动态规划五部曲: 1.确定dp数组 以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数组 debug方式:打印 二、刷题: 1.leetcode题目 509. 斐波那契数 - 力扣(LeetCode)(easy) class Solution:def fib(

代码随想录算法训练营day41 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的 动态规划的解题步骤 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 动态规划应该如何debug?       找问题的最好方式就是把dp数组打印出来,看看究竟是不是按照自己思路推导的! 509. 斐波那契数 确

算法训练营day41

动态规划理论基础(主要就是确定动态规划的几个步骤) 题目1:509. 斐波那契数 - 力扣(LeetCode) class Solution {public:int fib(int n) {if(n == 0) return 0;if(n == 1) return 1;int dp1 = 0;int dp2 = 1;int dp3 = 0;for(int i = 2;i <= n;i++)

算法打卡day41

今日任务: 1)198.打家劫舍 2)213.打家劫舍II 3)337.打家劫舍III 4)复习day16 198.打家劫舍 题目链接:198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每

代码随想录算法训练营DAY40\DAY41|C++动态规划Part.3|343.整数拆分、96.不同的二叉搜索树

DAY40休息日,本篇为DAY41的内容 文章目录 343.整数拆分思路dp含义递推公式(难点)初始化遍历顺序打印 CPP代码数学方法归纳证明法 96.不同的二叉搜索树思路dp含义递推公式初始化遍历顺序打印 CPP代码题目总结 343.整数拆分 力扣题目链接 文章讲解:343.整数拆分 视频讲解:动态规划,本题关键在于理解递推公式!| LeetCode:343. 整数拆分 状

代码随想录算法训练营day41

343. 整数拆分 五部曲: dp数组下标及含义:dp[i]表示第i个位置最大乘积dp数组初始化:dp[2]=1递推公式:dp[i] = max({dp[i], (i - j) * j, dp[i - j] * j});遍历方向:从前往后遍历dp数组推到举例: 2 3 4 5 6 7 8 9 10 1 2 4 6 9 12 18 27 36 class Solution {public:i

【JavaWeb】Day41.MySQL概述——多表设计(案例)

一对一         一对一关系表通常是用来做单表的拆分,也就是将一张大表拆分成两张小表,将大表中的一些基础字段放在一张表当中,将其他的字段放在另外一张表当中,以此来提高数据的操作效率。 一对一的应用场景: 用户表(基本信息+身份信息) 基本信息:用户的ID、姓名、性别、手机号、学历 身份信息:民族、生日、身份证号、身份证签发机关,身份证的有效期(开始时间、结束时间)

【代码随想录】day41

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、343整数拆分二、96不同的二叉搜索树 一、343整数拆分 class Solution {public:int integerBreak(int n) {vector<int> dp(n + 1, 1);for (int i = 2; i < n + 1; i ++) {for (in

代码随想录day41| 343. 整数拆分 、96.不同的二叉搜索树

343. 整数拆分 dp[i]:对i进行拆分,相乘得到的最大值dp[i] 递推公式: dp[i] = max(dp[i], j * (i - j), j * dp[i - j]);  为什么还要dp[i[放进去比较? ——这其实是在不断更新dp[i]的值,不放进的话,原本的dp[i]会直接被舍弃 初始化:dp[0]和dp[1]都是没有意义的,所以初始化为零,dp[2]=1 为什么只需

代码随想录算法训练营Day41 | 背包问题 一维、背包问题 二维、LeetCode416. 分割等和子集

01背包问题 二维dp数组 背包问题:用若干件物品装入固定容量的背包,使得背包内物品价值最大,我们有若干件物品体积的数组,也有物品价值的数组。 01背包问题:每件物品只有一个。 在解决背包问题时,明确递归五部曲: 1、dp[i][j]数组含义:从[0,i]个物品放在容量为j的背包中获得的最大价值。 2、递推公式:分两种情况(1)没有放物品i:dp[i][j]=dp[i-1][j];(2)放了

C++从零开始的打怪升级之路(day41)

这是关于一个普通双非本科大一学生的C++的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于继承的知识点 1.派生类的默认成员函数 首先我们来回顾以下默认成员函数是哪几个 1.构造函数                     完成初始化工作 2.析构函数

代码随想录算法训练营Day41 | 0-1背包理论基础、416.分割等和子集

0-1背包理论基础 基础 DP数组与其下标的含义 dp[i][j],i为物品编号,j为背包容量 dp[i][j]表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 递推公式 分类:是否要放入下标为i的物品: · 不放时最大价值为:dp[i - 1][j] · 放入时最大价值为:dp[i - 1][j – weight[i]] + value[i] 递推

代码随想录算法训练营day41| 416. 分割等和子集

416、分割等和子集: class Solution(object):def canPartition(self, nums):""":type nums: List[int]:rtype: bool"""sum_nums = sum(nums)if sum_nums % 2 != 0:return Falsetarget = sum_nums / 2dp = [0] * (target + 1

【卡码网】0-1背包问题 46. 携带研究材料——代码随想录算法训练营Day41

题目链接:46. 携带研究材料 题目描述 时间限制:5.000S  空间限制:128MB 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。  小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料

day41动态规划

day41 动态规划 分割和子集 题目描述: 分割等和子集 题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 答案 class Solution {public boolean canPartition(int[] nums) {if (nums == null || nums.length ==

【LeetCode】416. 分割等和子集(中等)——代码随想录算法训练营Day41

题目链接:416. 分割等和子集 题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2: 输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两

day41 CD播放(案例学习)

示例 该示例是一个简单的CD播放器,通过点击不同的按钮来控制CD的旋转和音乐的播放/暂停。 JavaScript部分的功能分析如下: rota数组用于描述每个CD的旋转角度,初始值为[0, 0]。result数组用于表示每个CD的状态,初始值为[false, false],代表两个CD都是静止不动的状态。setInter数组存储了定时器的引用,用于控制CD的旋转。playOrStop函数是点

@ 代码随想录算法训练营第7周(C语言)|Day41(动态规划)

@ 代码随想录算法训练营第7周(C语言)|Day41(动态规划) Day41、动态规划(包含题目 ● 343. 整数拆分 ● 96.不同的二叉搜索树 ) 343. 整数拆分 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 题目解答 int max(int a,int b ,int c){int res;res=a>b?

代码随想录算法训练营29期Day41|LeetCode 343,96

文档讲解:整数拆分  不同的二叉搜索树 343.整数拆分 题目链接:https://leetcode.cn/problems/integer-break/description/ 思路:        题目要求我们拆分n,拆成k个数使其乘积和最大,然而题目中并没有给出k,所以拆分个数不能作为维度来使用。        那我们就设dp[i]表示拆分i能获得的最大乘积,则最终答案为