剑指offer第六天

news2024/11/6 21:30:19

1.连续子数组的最大和

  1. 因为这个数组中含有负数,要不然就可以直接使用双指针的方法来解决这个问题
  2. 根据经验来讲,可以使用贪心或者动态规划的方法来解决
    1. 贪心的方法,只要当前的和是负数,那么他对于后续数组和一定是起到削弱的作用的,所以只要是当前的和小于0,那么就应该直接从头开始计算

贪心

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5+10;
int n;

int a[N];

int main()
{
    scanf("%d",&n);
    for(int i = 1;i<=n;++i)scanf("%d",&a[i]);
    int sum = 0,ans = -0x3f3f3f3f;
    for(int i = 1;i<=n;++i)
    {
        sum += a[i];
        ans = max(ans,sum);
        if(sum < 0)
        {
            sum = 0;
        }
    }
    printf("%d\n",ans);
    return 0;
}

2.跳台阶

class Solution {
    int dp[45]{};
public:
    int jumpFloor(int n) {
        // write code here
        dp[1] = 1,dp[2] = 2;
        for(int i = 3;i<=n;++i)dp[i] = dp[i-1]+dp[i-2];
        return dp[n];
    }
};

3.斐波那契数列

class Solution {
    int dp[45]{};
public:
    int Fibonacci(int n) {
        // write code here
        dp[1] = dp[2] = 1;
        for(int i = 3;i<=n;++i)dp[i] = dp[i-1]+dp[i-2];
        return dp[n];
    }
};

4.跳台阶扩展问题

class Solution {
    int dp[25]{};
public:
    int jumpFloorII(int n) {
        // write code here
        dp[0] = 1;
        for(int i = 1;i<=n;++i)
        {
            for(int j = 0;j<i;++j)
            {
                dp[i] += dp[j];
            }
        }
        return dp[n];
    }
};

5.矩形覆盖

class Solution {
    int dp[50]{};
public:
    int rectCover(int n) {
        if(n==0)return 0;
        dp[1] = 1,dp[2] = 2;
        for(int i = 3;i<=n;++i)dp[i] = dp[i-1]+dp[i-2];
        return dp[n];
    }
};

6.礼物的最大价值

class Solution {
    int dp[210][210]{};
public:
    int maxValue(vector<vector<int> >& grid) {
        // write code here
        int n = grid.size(),m = grid[0].size();
        for(int i = 1;i<=n;++i)
        {
            for(int j = 1;j<=m;++j)
            {
                dp[i][j] = max(dp[i-1][j],dp[i][j-1]) + grid[i-1][j-1];
            }
        }
        return dp[n][m];
    }
};

7.最长不含重复字符的子字符串

class Solution {
    int cnt[128]{};
    bool check()
    {
        for(int i = 0;i<128;++i)if(cnt[i]>1)return false;
        return true;
    }
public:
    int lengthOfLongestSubstring(string s) {
        // write code here
        int ans = -0x3f3f3f3f;
        int n = s.size();
        //双指针(滑动窗口)
        for(int left = 0,right = 0;right<n;++right)
        {
            cnt[s[right]]++;
            while(!check())
            {
                cnt[s[left++]]--;
            }
            if(check())ans = max(ans,right-left+1);
        }
        return ans;
    }
};

8.把数字翻译成字符串

class Solution {
public:
    int solve(string s) {
        // write code here
        int n = s.size();
        vector<int>dp(n);
        if(s[0] != '0')dp[0] = 1;
        if(n == 1)return dp[0];
        if(s[1] != '0'&&s[0] != '0')dp[1]++;
        int t = (s[0]-'0')*10+s[1]-'0';
        if(t>9&&t<=26)dp[1]++;
        for(int i = 2;i<n;++i)
        {
            if(s[i]!='0')dp[i] += dp[i-1];
            int t = (s[i-1]-'0')*10+s[i]-'0';
            if(t>9&&t<=26)dp[i] += dp[i-2];
        }
        return dp[n-1];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Modbus RTU通讯回顾

涉及技术&#xff1a; 1.使用NMdbus4 库 2.ushort[]转int 记得之前刚学习的时候&#xff0c;是ushort[] → Hex字符串→byte[] → 翻转byte[] →BitConverter.ToInt32()&#xff0c;饶了一大圈&#xff1b;实际上可以直接转&#xff1b;这里也有小细节&#xff1a;使用BitCo…

HFSS学习笔记(五)金属过孔、复制模型带激励等问题(持续更新...)

HFSS学习笔记&#xff08;五&#xff09;金属过孔、复制模型带激励等问题&#xff08;持续更新…&#xff09; 一、金属过孔设计 方法一&#xff1a;用介质减去金属圆柱体&#xff0c;然后再添加金属圆柱体 方法二&#xff1a;嵌入金属圆柱 圆柱过孔选择材料为“copper” HFS…

Late Chunking×Milvus:如何提高RAG准确率

01. 背景 在RAG应用开发中&#xff0c;第一步就是对于文档进行chunking&#xff08;分块&#xff09;&#xff0c;高效的文档分块&#xff0c;可以有效的提高后续的召回内容的准确性。而对于如何高效的分块是个讨论的热点&#xff0c;有诸如固定大小分块&#xff0c;随机大小分…

大屏可视化:舞动数据与美观的“设计秘籍”

大屏可视化鉴赏&#xff1a;踏入软件系统产品设计之旅&#xff0c;让我们一同鉴赏那些闪耀在智慧农业、智慧园区、智慧社区及智慧港口等领域的大屏可视化杰作。每一帧画面&#xff0c;都是科技与创新的完美融合&#xff0c;数据跃然屏上&#xff0c;智慧触手可及。 >> 数…

基于STM32的智能声音跟随小车设计

引言 本项目基于STM32微控制器设计了一个智能声音跟随小车&#xff0c;通过集成麦克风阵列实现声音源定位和跟随功能。该系统可以检测环境中的声音信号&#xff0c;如手掌拍击声或语音指令&#xff0c;驱动小车向声源方向移动。项目涉及硬件设计、声音信号处理算法以及电机控制…

Bruno解决SSL验证问题

在测试接口的时候&#xff0c;我使用的是Bruno这个软件&#xff0c;开源离线的API测试软件。 主页是这样子的 今天在测试一个HTTPS的接口时候&#xff0c;因为这个HTTPS接口是用的是自签证书&#xff0c;所以就报错误了。 Error invoking remote method send-http-request: …

【论文速读】| APOLLO:一种基于 GPT 的用于检测钓鱼邮件并生成警告用户的解释的工具

基本信息 原文标题&#xff1a;APOLLO: A GPT-based tool to detect phishing emails and generate explanations that warn users 原文作者&#xff1a;Giuseppe Desolda, Francesco Greco, Luca Vigan 作者单位&#xff1a;University of Bari “A. Moro”, Italy, King’…

jfrog artifactory oss社区版,不支持php composer私库

一、docker安装 安装环境&#xff1a;centos操作系统&#xff0c;root用户。 如果是mac或ubuntu等操作系统的话&#xff0c;会有许多安装的坑等着你。 一切都是徒劳&#xff0c;安装折腾那么久&#xff0c;最后还是不能使用。这就是写本文的初衷&#xff0c;切勿入坑就对了。 …

WindowsDocker安装到D盘,C盘太占用空间了。

Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…

vue常见题型(1-10)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 2.2双向绑定的原理是什么vue框架采用的是数据双向绑定的方式&#xff0c;由三个重要部分构成2.2.1.ViewModel2.2.2 双向绑定2.2.3.1.编译Compile2.2.3.2.依赖收集 3…

python怎么将字符串转换为数字

python如何将列表中的字符串转为数字&#xff1f;具体方法如下&#xff1a; 有一个数字字符的列表&#xff1a; numbers [1, 5, 10, 8] 想要把每个元素转换为数字&#xff1a; numbers [1, 5, 10, 8] 用一个循环来解决&#xff1a; new_numbers []; for n in numbers:new_n…

大数据新视界 -- 大数据大厂之 Impala 性能优化:解锁大数据分析的速度密码(上)(1/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Flutter 插件 sliding_up_panel 实现从底部滑出的面板

前言 sliding_up_panel 是一个 Flutter 插件&#xff0c;用于实现从底部滑出的面板。它在设计上非常灵活&#xff0c;能够适应多种 UI 场景&#xff0c;比如从底部滑出的菜单、可拖动的弹出面板等。以下是 sliding_up_panel 的详细用法&#xff0c;包括常用的参数说明和示例代…

大客户营销数字销售实战讲师培训讲师唐兴通专家人工智能大模型销售客户开发AI大数据挑战式销售顾问式销售专业销售向高层销售业绩增长创新

唐兴通 销售增长策略专家、数字销售实战导师 专注帮助企业构建面向AI数字时代新销售体系&#xff0c;擅长运用数字化工具重塑销售流程&#xff0c;提升销售业绩。作为《挑战式销售》译者&#xff0c;将全球顶尖销售理论大师马修狄克逊等理论导入中国销售业界。 核心专长&…

es数据同步(仅供自己参考)

数据同步的问题分析&#xff1a; 当MySQL进行增删改查的时候&#xff0c;数据库的数据有所改变&#xff0c;这个时候需要修改es中的索引库的值&#xff0c;这个时候就涉及到了数据同步的问题 解决方法&#xff1a; 1、同步方法&#xff1a; 当服务对MySQL进行增删改的时候&…

入门车载以太网(3) -- 网络层

目录 1. 网络通信示例 2. IP地址类别 3. IP数据报 4. 小结 今天继续车载以太网&#xff0c;聊聊网络层。 1. 网络通信示例 我们首先回顾车载以太网的数据传输模型。 从7层开始(车载以太网模糊了5-7层&#xff0c;统称应用层)&#xff0c;每个中间层都为上层提供功能&…

六个核桃斥资千万研究脑健康,核桃健脑作用科学具象化了

健康&#xff0c;是这两年热度居高不下的社会话题。对健康的追求影响了诸多领域的发展&#xff0c;上至尖端科研&#xff0c;下至日常接触的食品饮料&#xff0c;都已被卷入大势。 其中&#xff0c;“脑健康”这个听起来更前沿的话题&#xff0c;又已经成为格外重要的一个领域…

基于Multisim光控夜灯LED电路(含仿真和报告)

【全套资料.zip】光控夜灯LED电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.采用纯数字电路&#xff0c;非单片机。 2.通过检测周围光线&#xff0c;光线暗且有声音时自动开灯…

【go从零单排】go中的基本数据类型和变量

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 基本类型 go中的string、int、folat都可以用连接boolen可以用逻辑表达式计算 package mainimport "fmt&quo…

前端学习笔记—Vue3特性

一、 Vue3与Vite构建工具简介 image.png image.png image.png image.png Vite构建工具&#xff08;其他的打包工具有webpack&#xff0c;grunt&#xff0c;gulp&#xff09; image.png image.png 构建 二、创建Vue3项目 vite在TypeScript结合使用上&#xff0c;直接开箱即用&am…