您的位置:首页 > 科技 > IT业 > 家具设计网站推荐_网络营销的定义与特点_seo网站结构优化_seo平台怎么样

家具设计网站推荐_网络营销的定义与特点_seo网站结构优化_seo平台怎么样

2025/2/27 9:38:20 来源:https://blog.csdn.net/2302_80418176/article/details/144688954  浏览:    关键词:家具设计网站推荐_网络营销的定义与特点_seo网站结构优化_seo平台怎么样
家具设计网站推荐_网络营销的定义与特点_seo网站结构优化_seo平台怎么样

学完前面的算法题,相信大家的水平定是有所提升,那么今天我们来点难题开一下刀

第一题

题目链接

188. 买卖股票的最佳时机 IV - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int maxProfit(int k, vector<int>& prices) {

        const int INF = 0x3f3f3f3f;

        int n = prices.size();

        //细节处理

        k = min(k,n / 2);

        //建表

        vector<vector<int>> f(n, vector<int>(k + 1, -INF));

        auto g = f;

        //初始化

        f[0][0] = -prices[0], g[0][0] = 0;

        //填表

        for(int i = 1; i < n; i++)

        {

            for(int j = 0; j <= k; j++)

            {

                f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);

                g[i][j] = g[i - 1][j];

                if(j - 1 >= 0)

                g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]);

            }

        }

        int res = 0;

        for(int j = 0; j <= k; j++)

        {

            res = max(g[n - 1][j], res);

        }

        return res;

    }

};

第二题

题目链接

123. 买卖股票的最佳时机 III - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int maxProfit(vector<int>& prices) {

        const int INF = 0x3f3f3f3f;

        int n = prices.size();

        //建表

        vector<vector<int>> f(n,vector<int>(3,-INF));

        auto g= f;

        //初始化

        f[0][0] = -prices[0], g[0][0] = 0;

        //填表

        for(int i = 1; i < n; i++)

        {

            for(int j = 0; j <= 2; j++)

            {

                f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);

                g[i][j] = g[i - 1][j];

                if(j >= 1)

                g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]);

            }

        }

        int res = 0;

        for(int j = 0; j <= 2; j++)

        {

            res = max(res, g[n - 1][j]);

        }

        return res;

    }

};

相信看到这里的小伙伴一定会有疑问,这两题的代码咋感觉差不多呢,是的博主也发现了,但是代码就是这样的

第三题

题目链接

53. 最大子数组和 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int maxSubArray(vector<int>& nums) {

        int n = nums.size();

        //建表

        vector<int> dp(n + 1);

        //初始化

        dp[0] = 0;//这里可以省略,因为vector会初始化为0

        //填表

        int ret = -0x3f3f3f3f;

        for(int i = 1; i <= n; i++)

        {

            dp[i] = max(nums[i - 1], dp[i - 1] + nums[i - 1]);

            ret = max(ret, dp[i]);

        }

        return ret;

    }

};

本篇文章的内容就先到这里,我们下期文章再见!!!!

记得一键三联哦!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com