算法笔记day04

news2024/11/30 12:40:30

目录

1. 在字符串中找出连续最长的数字串

2.岛屿数量

3.拼三角


1. 在字符串中找出连续最长的数字串

字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com)

算法思路:

这是一道简单的双指针题目,首先用i遍历数组,当遍历到数字的时候,i向后便利,使用count记录下数字的长度。如果数字的长度 count 大于 历史的最大长度 maxcount,更新 最大长度的起始位置maxi,和maxcount。

#include <iostream>
#include<string>
using namespace std;

int isnumb(char s)//判断是否是数字
{
    return s >= '0' && s <= '9';
}


int main() {
    string s ;
    cin>>s;

    int maxi = -1;//最大长度数字串的起始位置
    int maxcount = 0;//历史最大长度
    int  i = 0;
    while(i < s.size())
    { 
       int count = 0;//记录当前数字串的长度 
       while(i < s.size()&&isnumb(s[i]))       
        {
            count++;
            i++;
         }
         if(count > maxcount)//当前数字串是否比历史最大长度大
         {
           maxi = i-count;
           maxcount = count;
         }
         i++;
           
    }
    string ret = s.substr(maxi,maxcount);  
    cout<<ret<<endl;
 
}
// 64 位输出请用 printf("%lld")

2.岛屿数量



 

算法思路:

这是一道经典的搜索题,使用dfs和bfs都可以,但是dfs的代码更好写,所以使用dfs。

遍历矩阵找到一块陆地,对这块dfs,ret++ 并将周边的的陆地全部标记为已遍历过。

dfs的目的就是将这块陆地周围的陆地全部标记

class Solution {
public:
    int m , n;//矩阵的边界
    int dx[4] = {0, 0, 1, -1};//向量数组,为了更好的遍历上下左右
    int dy[4] = {1, -1, 0, 0};
    bool vis[210][210] = { 0 };//标记当前陆地是否被遍历过
    int solve(vector<vector<char> >& grid) 
    {
       m = grid.size(), n = grid[0].size();
       int ret = 0;

        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                if(grid[i][j] == '1' && !vis[i][j])//找到一块没有被遍历过的陆地
                {
                    ret++;
                    dfs(grid, i ,j);
                }   
            }
        }
        return ret;
    }

    void dfs(vector<vector<char> >& grid, int i, int j)
    {
        vis[i][j] = true;//将当前位置标记
        for(int k = 0; k < 4; k++)
        {
            int x = i + dx[k], y = j + dy[k];//上下左右
            if(x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1' && !vis[x][y])
            {   //如果x,y不越界,grid[x][y]是一块陆地,并且没有被便利过
                dfs(grid, x, y);
            }
        }
    }

};

3.拼三角

拼三角 (nowcoder.com)

算法思路:

这道题利用单调性是有取巧的做法,将输入的6个数进行排序。

这里012是数组下标的012,数组依次增大

 我们那最左边的4组举例,如果 0 1 2构不成三角形,那么 0 1 3, 0 1 4, 0 1 5,必然构不成三角形,因为2是剩下最小数字,0 + 1不能大于 2,那么肯定也不能 大于 3 4 5,所以剩下3组都不需要判断了。

#include <iostream>
#include <algorithm>
using namespace std;
int t;
int arr[6];
int main()
{
     cin >> t;
     while(t--)
     {
         for(int i = 0; i < 6; i++) cin >> arr[i];
         sort(arr, arr + 6);

         if(arr[0] + arr[1] > arr[2] && arr[3] + arr[4] > arr[5] ||
         arr[0] + arr[2] > arr[3] && arr[1] + arr[4] > arr[5] ||
         arr[0] + arr[3] > arr[4] && arr[1] + arr[2] > arr[5] ||
         arr[0] + arr[4] > arr[5] && arr[1] + arr[2] > arr[3])
         {
             cout << "Yes" << endl;
         }
         else cout << "No" << endl;
     }
 
 return 0;
}

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

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

相关文章

春日技术辅导:Spring Boot课程答疑

3系统分析 3.1可行性分析 通过对本课程答疑系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本课程答疑系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

数据驱动,漫途能耗管理系统打造高效节能新生态!

在我国能源消耗结构中&#xff0c;工业企业所占能耗比例相对较大。为实现碳达峰、碳中和目标&#xff0c;工厂需强化能效管理&#xff0c;减少能耗与成本。高效的能耗管理系统通过数据采集与分析&#xff0c;能实时监控工厂能源使用及报警情况&#xff0c;为节能提供数据。构建…

JVM 调优篇10 使用arthas排优

一 Arthas的作用 1.1 作用 1. 这个类从哪个 jar 包加载的&#xff1f;为什么会报各种类相关的 Exception&#xff1f; 2.是否有一个全局视角来查看系统的运行状况&#xff1f; 3. 有什么办法可以监控到JVM的实时运行状态&#xff1f; 4. 怎么快速定位应用的热点&#x…

TensorFlow详细配置

Anaconda 的安装路径配置系统环境变量 1 windows path配置 2 conda info C:\Users\Administrator>conda info active environment : None user config file : C:\Users\Administrator\.condarc populated config files : C:\Users\Administrator\.condarc …

【含文档】基于Springboot+Vue的高校科研信息管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

mybatis之入门(详细介绍)

1.Mybatis简介 MyBatis 是一个开源、轻量级的数据持久化框架&#xff0c;是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC&#xff0c;简化了加载驱动、创建连接、创建 statement 等繁杂的过程&#xff0c;开发者只需要关注 SQL 语句本身。 1.1.什么是Mybatis MyB…

VSCODE 导入cubeide工程

1.下载vscode及插件STM32 VS Code Ectersion 版本号1.0.0&#xff0c;之后这个有导入功能。 2.等待自动安装对应插件&#xff0c;提示缺少什么就补什么 3.在左侧出现stm32图标。点击Import a local project导入本地项目。 4.报错 [{"resource": "/f:V11/cmak…

【Linux】进程控制:从fork到exec

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 进程创建 &#x1f95d; fork函数初识&#x1f95d; 写时拷贝&#x1f95d; fork常规用法&#x1f95d; fork调用失败的原因 二&#xff1a;&#x1f525;…

群晖使用Docker搭建NASTool自动化观影工具并实现在线远程管理

文章目录 前言1. 本地搭建Nastool2. nastool基础设置3. 群晖NAS安装内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要分享一下如何在群晖NAS中本地部署Nastool&#xff0c;并结合cpolar内网穿透工具&#xff0c;轻松实现公网环境远程管理与访问本地NAS中储存的影…

惠普电脑怎么开启vt_惠普电脑开启vt虚拟化图文教程(支持新旧bios开启方法)

最近使用惠普电脑的小伙伴们问我&#xff0c;惠普电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术&#xff0c;当CPU支持VT-x虚拟化技术&#xff0c;有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中&#xff0c;手动进行设置&#xff…

数字媒体产业园区:创新资源集聚,助力企业成长

在当今数字化浪潮汹涌的时代&#xff0c;数字媒体产业园区作为创意与技术的交汇点&#xff0c;正以其独特的魅力和无限的潜力&#xff0c;成为助力企业成长的重要平台。其中&#xff0c;“数字媒体产业园区”以其创新资源的集聚效应&#xff0c;为入驻企业提供了广阔的发展空间…

双十一有什么好物推荐?双十一必买清单大汇总

双十一的钟声即将敲响&#xff0c;数码好礼的选购热潮已然兴起。在这个信息爆炸的时代&#xff0c;我们被各种数码产品的广告和推荐所包围。如何从中筛选出真正适合自己的数码礼物呢&#xff1f;本文将以专业的视角、客观的评价&#xff0c;为你梳理数码产品的优缺点&#xff0…

将 QT 应用程序打包成如意玲珑软件包

在上一篇文章《国产系统之如意玲珑》中&#xff0c;我为大家介绍了一款创新的国产软件包管理工具——如意玲珑&#xff08;Linyaps&#xff09;。该工具集致力于解决 Linux 系统下传统软件包格式带来的复杂性和依赖问题&#xff0c;提供了一种更独立、更简洁的打包和管理方式。…

python爬虫,爬取网页壁纸图片

python爬虫实战&#xff0c;爬取网页壁纸图片 使用python爬取壁纸图片&#xff0c;保存到本地。 爬取彼岸图网&#xff0c;网站地址https://pic.netbian.com/ 本人小白&#xff0c;记录一下学习过程。 开始前的准备 安装python环境&#xff0c;略。 python编辑器pycharm2…

Linux:防火墙相关命令使用(Ubuntu)

1.安装防火墙工具 虚拟机安装好系统后&#xff0c;默认是没有管理工具的。如果已经安装可以跳过。 # 安装ufw&#xff08;Uncomplicated Firewall&#xff09;&#xff0c;这是Ubuntu上管理防火墙的一个简单工具 sudo apt-get install ufw2.开启和关闭防火墙 # 开启防火墙 sud…

RuoYi-Vue若依框架-后端设置不登陆访问(白名单)

找到SecurityConfig类 确认自己的需求 /*** anyRequest | 匹配所有请求路径* access | SpringEl表达式结果为true时可以访问* anonymous | 匿名可以访问* denyAll | 用户不能访问* fullyAuthenticated | 用户完全认证可…

请速度收藏,Python爬虫必备的8大技巧!

想要快速学习爬虫&#xff0c;最值得学习的语言一定是Python&#xff0c;Python应用场景比较多&#xff0c;比如&#xff1a;Web快速开发、爬虫、自动化运维等等&#xff0c;可以做简单网站、自动发帖脚本、收发邮件脚本、简单验证码识别脚本。 爬虫在开发过程中也有很多复用的…

输电线路语义分割图像数据集,图片总共1200张左右,包含分割标签,json标签

输电线路语义分割图像数据集&#xff0c;图片总共1200张左右&#xff0c;包含分割标签&#xff0c;json标签 输电线路语义分割图像数据集介绍 数据集概述 名称&#xff1a;输电线路语义分割图像数据集图片数量&#xff1a;约1200张标注格式&#xff1a;JSON (包含像素级分割标…

中小型医院网站:Spring Boot开发策略

2 相关技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xff0c;…

迅速入门Pytorch深度学习框架

一、引言 随着人工智能技术的飞速发展&#xff0c;深度学习已成为当今科技领域的热门话题。PyTorch作为一款功能强大且易于使用的深度学习框架&#xff0c;受到了越来越多开发者和研究者的青睐。本文旨在帮助新手快速入门PyTorch&#xff0c;掌握其基本概念、核心功能以及实际…