[C国演义] 第十四章

这篇具有很好参考价值的文章主要介绍了[C国演义] 第十四章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拆分单词

力扣链接
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划
常见的子数组问题 ⇒ 要使用动态规划的解法
那么要确定dp数组的含义 ⇒ do[i] — — 以 s[i] 结尾的子数组可不可以用 wordDict中的字符串来表示
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划
那么问题来了, 如何判断字符串[j, i] 在没在wordDict中呢?

  • 我们可以用一个 哈希表 . 将wordDict导入一个哈希表中, count 判读一个字符是否在哈希表中出现

  • 遍历方向 — — 从前到后

  • 初始化 — — 由于出现了 j-1, 那么我们可以让dp数组多开一个位置 ⇒ 利于我们初始化, 由于都是从第一个位置往后推导dp状态的, 那么dp[0] 就初始化为 true

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) 
    {
        // 将wordDict 导入一个哈希表, 用于判断字符串是否出现过
        unordered_set<string> hash;
        for(auto e : wordDict) hash.insert(e);

        int n = s.size();
        vector<bool> dp(n+1);

        // 初始化
        dp[0] = true;
        
        // 填表
        // 在字符串中头插一个空格, 方便确定dp的i 和 s中的i的关系
        s = ' ' + s; 
        for(int i = 1; i <= n; i++)
        {
            for(int j = i; j >= 1; j--)
            {
                if(dp[j-1] && hash.count(s.substr(j, i-j+1)))
                {
                    // 已经可以构成, 那就没有必要往后遍历了
                    dp[i] = true;
                    break;
                }       
            }
        }

        return dp[n];
    }
};

[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划


乘积为正数的最长子数组长度

力扣链接
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划

还是 子数组问题 ⇒ dp[i]的含义是: 以nums[i] 结尾的子数组中乘积为正数的最长长度

接下来来分析 dp转移方程从nums[i] 位置开始分析起
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划
[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划

  • 遍历顺序 – – f表 和 g表 同时遍历, 从前往后
  • 初始化 — — 涉及到 i - 1 ⇒ f表 和 g表 都多开一个空间, 且 f[0] = g[0] = 0;
class Solution {
public:
    int getMaxLen(vector<int>& nums) 
    {
        int n = nums.size();

        // 建表 + 初始化
        vector<int> f(n+1, 0);
        vector<int> g(n+1, 0);

        // 填表
        int res = 0;
        for(int i = 1; i <= n; i++)
        {
            if(nums[i-1] > 0)
            {
                f[i] = f[i-1] + 1;
                g[i] = g[i-1] == 0 ? 0 :g[i-1]+1;
            }
            
            if(nums[i-1] < 0)
            {
                f[i] = g[i-1] == 0 ? 0 : g[i-1] + 1;
                g[i] = f[i-1] + 1;
            }

            res = max(res, f[i]);
        }

        return res;
    }
};

[C国演义] 第十四章,刷题录,c++,leetcode,算法,stl,动态规划


凤凰台上凤凰游,凤去台空江自流。——李白《登金陵凤凰台》文章来源地址https://www.toymoban.com/news/detail-717775.html

到了这里,关于[C国演义] 第十四章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十四章 RabbitMQ应用

    一般MQ用于系统解耦、削峰使用,常见于微服务、业务活动等场景。 RabbitMQ整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。 Producer:生产者,就是投递消息的一方。消息一般可以包含2个部分:消息体和标签(Label)。消息的标签用来描述这条消息,比如一个

    2024年01月25日
    浏览(38)
  • 第十四章 ObjectScript - 系统函数

    本节重点介绍 ObjectScript 中一些最常用的系统函数。 这些函数的名称不区分大小写。 类库还提供了大量实用方法,可以像使用函数一样使用它们。 在给定一些输入的情况下,可以使用以下函数来选择一个值: $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配

    2024年02月10日
    浏览(27)
  • Nodejs 第十四章(process)

    process 是Nodejs操作当前进程和控制当前进程的API,并且是挂载到globalThis下面的全局API API 介绍 1. process.arch 返回操作系统 CPU 架构 跟我们之前讲的os.arch 一样 \\\'arm\\\' 、 \\\'arm64\\\' 、 \\\'ia32\\\' 、 \\\'mips\\\' 、 \\\'mipsel\\\' 、 \\\'ppc\\\' 、 \\\'ppc64\\\' 、 \\\'s390\\\' 、 \\\'s390x\\\' 、以及  \\\'x64\\\' 2. process.cwd() 返回当前的工作目

    2024年02月10日
    浏览(23)
  • Android 第十四章 FragmentContainerView

    FragmentContainerView extends FrameLayout FragmentContainerView是专门为Fragments设计的自定义布局。它扩展了FrameLayout,因此它可以可靠地处理Fragment 事务,并且它还具有与Fragment 行为协调的附加特性 FragmentContainerView应用作Fragments的容器,通常设置在活动的xml布局 FragmentContainerView将只允许

    2024年02月11日
    浏览(34)
  • 《微服务实战》 第十四章 RabbitMQ应用

    第十六章 Spring cloud stream应用 第十五章 RabbitMQ 延迟队列 第十四章 RabbitMQ应用 一般MQ用于系统解耦、削峰使用,常见于微服务、业务活动等场景。 RabbitMQ整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。 Producer:生产者,就是投递消息的一方。消息一般可

    2024年02月06日
    浏览(32)
  • 第十四章 使用Vercel部署在线文档

    文档网站需要发布到互联网上才能让更多的人知道。传统的发布方法需要做以下准备。 Linux服务器; 网页服务软件 Nginx; 购买域名 + 实名认证; HTTPS 证书; Sftp 上传工具; Github Action CI 自动发布最新文档。 这里面租用服务器和域名需要一笔花费。安装 Linux、Nginx,配置域名

    2024年02月07日
    浏览(38)
  • 第十四章 Unity 移动和旋转(下)

    本章节我们介绍另外两种形式的旋转,也对应了两个方法。首先是RotateAround方法,他是围绕穿过世界坐标中的 point 点的 axis轴旋转 angle 度。这个方法虽然比较晦涩难懂,但是我们使用一个案例,大家就非常明白了。我们创建一个新的“SampleScene5”场景,然后创建一个“Cube”

    2024年02月08日
    浏览(34)
  • 第十四章 TIM基本定时器

    目录 13.1 定时器的分类 13.2 TIM基本定时器简介 13.2.1 定时器的概念和作用 13.2.2 TIM基本定时器的工作原理和使用场景 13.3 TIM基本定时器功能框图 13.3.1 时钟源 13.3.2 控制器 13.3.3 时基(定时器的心脏) 13.3.4 影子寄存器 13.4 TIM基本定时器的初始化和配置方法 13.4.1 定时时间的计算

    2024年02月05日
    浏览(26)
  • 【Rust】Rust学习 第十四章智能指针

    指针  ( pointer )是一个包含内存地址的变量的通用概念。这个地址引用,或 “指向”(points at)一些其他数据。Rust 中最常见的指针是第四章介绍的  引用 ( reference )。引用以   符号为标志并借用了他们所指向的值。除了引用数据没有任何其他特殊功能。它们也没有任

    2024年02月12日
    浏览(23)
  • 第十四章 开放条件下的宏观经济

    国际收支是指一个经济体的居民与非居民之间因各种经济往来而发生的收入和支付的系统记录。 国际收支是一个经济概念。 国际收支反映的是以货币数量记录的全部国际经济交易。商品和服务买卖、物物交换、金融资产之间的交换、无偿的单项产品和服务的转移、无偿的单

    2024年02月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包