青海网页设计与网站建设,网站建设创意文案,爱做网站外国,发布页全部页面设计所有的遍历寻求有条件约束的最大值都可以转换成#xff0c;新的数带来的最大值的变化#xff0c;问题往这个方向转化就可以#xff0c;问题都是在最中进行选择的#xff0c;因此关注的问题最大值得上限就好了#xff0c;不必关注可能随机的下限。关注随机可能的下限会把问…所有的遍历寻求有条件约束的最大值都可以转换成新的数带来的最大值的变化问题往这个方向转化就可以问题都是在最中进行选择的因此关注的问题最大值得上限就好了不必关注可能随机的下限。关注随机可能的下限会把问题想的更复杂了往混沌方向走了思维要清晰简单把握最新变化的可能性。 class Solution {
public:int massage(vectorint nums) {//最优计算方式构建最优计算方法//分类讨论场景1 在顺序中选择插空排列组合int n nums.size(); //一共有多少的数据总量if (n 0) {return 0;}if (n 1) {return nums[0];}int prev1 nums[0]; //前一个数据int prev2 std::max(nums[0], nums[1]); //第一个数据与第二个数据中取最大值//还是采用迭代的思路迭代for (int i 2; i n; i) { //从第二个数据开始计算int current std::max(prev2, prev1 nums[i]); //第二天与第一天prev1 prev2;prev2 current;}return prev2; //最终留下来的都是最大值迭代选法。采用的是迭代的选法//采用数学里归纳法迭代的思路来演化使用递归应该也能解决}
};
迭代最优解思路。
本题的思路因为需要访问计算每一次的数据得到最大的那个值为了n长的数组中符合slect规律的话可以先解决 n-1长度的情况下的选择最大值因为选择是有限制的随机并且最大的可能是不选最小值是0那么问题就会转化为n长的数组规模下n-1,给n数组带来变数的可能性针对问题特性新的数字给最大值带来了新的可能性那就是相隔一个的选择情况下加上新的n位置的数产生了最大值或者当初n-1个数的值依然保持最大。这两种比较就可以得到n的时候的最大值。 迭代在计算机中具有许多优势这些优势使它成为解决问题的常用方法之一 空间效率 迭代通常使用的内存空间相对较小因为它只需要在内存中保留有限数量的变量和数据结构。相比之下递归可能需要维护递归调用的堆栈占用更多内存。 时间效率 迭代通常比递归更快因为它避免了递归调用的开销。递归调用需要保存当前函数的状态、参数等信息并在递归返回时恢复这些状态而迭代仅使用循环来执行操作减少了这些开销。 可读性 迭代往往更容易理解和调试因为它是一个线性的控制流结构。递归可能会变得更加复杂因为它涉及到函数的嵌套调用难以跟踪和理解。 栈保留 迭代通常更容易控制和限制栈的深度。递归调用可能会导致栈溢出特别是对于大规模的问题而迭代可以更容易地避免这种情况。 优化 编译器和解释器通常能够对迭代代码进行更好的优化因为它们能够更容易地分析和理解迭代的行为从而提高性能