当前位置: 首页 > news >正文

大厂真题:【DP/贪心】字节跳动2023秋招-小红的 01 串

题目描述与示例

题目描述

小红拿到了一个 01 串,她准备将若干个字符'1' 染成红色,将若干个字符'0' 染成蓝色,但有个限制:如果一个'0' 和一个'1' 相邻,那么它们不能同时染色。

小红想知道,最多可以染多少个字符?

输入描述

输入仅有一行,为小红拿到的 01 串。

字符串长度不超过200000

输出描述

一个正整数,代表能染色的最多字符。

示例一

输入

110011

输出

4

说明

染红第一个、第三个、第五个、第六个字符即可。

解题思路

每一个位置都有染和不染两种情况,故可以用状态dp来解决问题。

也可以贪心地解决问题,因为对于每一个0110子串,只能染色一个字符,因此可以通过字符串中0110子串的个数来进行计算。

代码

解法一:DP

Python

# 题目:【DP】字节跳动2023秋招-小红的 01 串
# 作者:闭着眼睛学数理化
# 算法:状态DP
# 代码有看不懂的地方请直接在群上提问s = input()
n = len(s)# 初始化n*2的二维dp数组
# dp[i]表示考虑第i个字符的情况
# dp[i][0]表示第i个字符染色,能得到的最多染色数目
# dp[i][1]表示第i个字符不染,能得到的最多染色数目
dp = [[0, 0] for _ in range(n)]
# 对第0个字符进行染色
dp[0][0] = 1for i in range(1, n):# 如果第i个字符和第i-1个字符不同# 两种情况:# 1. 当前字符染色,前一个字符不染# 2. 当前字符不染,前一个字符可以染色也可以不染色if s[i] != s[i-1]:# 当前字符染色,+1表示当前字符染色后,染色数目+1dp[i][0] = dp[i-1][1] + 1# 当前字符不染色,为上一个字符染色或不染取得的最大值dp[i][1] = max(dp[i-1][0], dp[i-1][1])# 如果第i个字符和第i-1个字符相同# 两种情况:# 1. 当前字符染色,前一个字符可以染色也可以不染色# 2. 当前字符不染,前一个字符可以染色也可以不染色else:dp[i][0] = max(dp[i-1][0], dp[i-1][1]) + 1dp[i][1] = max(dp[i-1][0], dp[i-1][1])print(max(dp[-1]))

Java

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();int n = s.length();int[][] dp = new int[n][2];dp[0][0] = 1;for (int i = 1; i < n; i++) {if (s.charAt(i) != s.charAt(i - 1)) {dp[i][0] = dp[i - 1][1] + 1;dp[i][1] = Math.max(dp[i - 1][0], dp[i - 1][1]);} else {dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1]) + 1;dp[i][1] = Math.max(dp[i - 1][0], dp[i - 1][1]);}}int maxColoring = Math.max(dp[n - 1][0], dp[n - 1][1]);System.out.println(maxColoring);}
}

C++

#include <iostream>
#include <string>
#include <vector>using namespace std;int main() {string s;cin >> s;int n = s.length();vector<vector<int>> dp(n, vector<int>(2, 0));dp[0][0] = 1;for (int i = 1; i < n; i++) {if (s[i] != s[i - 1]) {dp[i][0] = dp[i - 1][1] + 1;dp[i][1] = max(dp[i - 1][0], dp[i - 1][1]);} else {dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]) + 1;dp[i][1] = max(dp[i - 1][0], dp[i - 1][1]);}}int maxColoring = max(dp[n - 1][0], dp[n - 1][1]);cout << maxColoring << endl;return 0;
}

时空复杂度

时间复杂度:O(N)。仅需一次遍历数组。

空间复杂度:O(N)。dp数组所占空间,如果使用滚动dp数组,可以将

解法二:贪心

Python

# 题目:【DP】字节跳动2023秋招-小红的 01 串
# 作者:闭着眼睛学数理化
# 算法:贪心
# 代码有看不懂的地方请直接在群上提问s = input()
n = len(s)
ans = 0
i = 0
while i < n:j = i + 1while j < n and s[j] != s[j - 1]:j += 1ans += (j - i + 1) // 2i = jprint(ans)

Java

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.next();int n = s.length();int ans = 0;for (int i = 0, j; i < n; i = j) {for (j = i + 1; j < n && s.charAt(j) != s.charAt(j - 1); ++j);ans += (j - i + 1) / 2;}System.out.println(ans);}
}

C++

#include <bits/stdc++.h>
using namespace std;const int N=200004;
char s[N];
int main(){scanf("%s",s+1);int n=strlen(s+1);int ans=0;for(int i=1,j;i<=n;i=j){for(j=i+1;j<=n&&s[j]!=s[j-1];++j);ans+=(j-i+1)/2;}printf("%d\n",ans);
}

时空复杂度

时间复杂度:O(N)。仅需一次遍历数组

空间复杂度:O(1)。仅需若干常数变量。

华为OD算法/大厂面试高频题算法练习冲刺训练

  • 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

  • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

  • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

  • 60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁

  • 可上全网独家的欧弟OJ系统练习华子OD、大厂真题

  • 可查看链接 OD算法冲刺训练课程表 & OD真题汇总(持续更新)

  • 绿色聊天软件戳 od1336了解更多

相关文章:

大厂真题:【DP/贪心】字节跳动2023秋招-小红的 01 串

题目描述与示例 题目描述 小红拿到了一个 01 串&#xff0c;她准备将若干个字符1 染成红色&#xff0c;将若干个字符0 染成蓝色&#xff0c;但有个限制&#xff1a;如果一个0 和一个1 相邻&#xff0c;那么它们不能同时染色。 小红想知道&#xff0c;最多可以染多少个字符&a…...

【技术类-01】doc转PDF程序卡死的解决方案,

摘要&#xff1a; 1、报错&#xff1a; raise AttributeError("%s.%s" % (self._username_, attr))&#xff09; 2、表现&#xff1a;doc转PDF卡死&#xff08;白条不动或出现以上英文&#xff09; 3、解决&#xff1a;在docx保存代码行后面加上time.sleep(3) 4、…...

探索未来,开启无限可能:打造智慧应用,亚马逊云科技大语言模型助您一臂之力

文章目录 什么是大模型&#xff1f;大模型训练方法亚马逊云科技推出生成式AI新工具 —— aws toolkit使用教程 总结 什么是大模型&#xff1f; 近期&#xff0c;生成式大模型是人工智能领域的研究热点。这些生成式大模型&#xff0c;诸如文心一言、文心一格、ChatGPT、Stable …...

HTML点击链接强制触发下载

常见网页中会有很多点击链接即下载的内容&#xff0c;以下示范一下如何实现 <a href"文件地址" download"下载的文件名字&#xff08;不包括后缀&#xff09;">强制下载</a> 下面举个例子&#xff1a; <a href"./image/test.jpg"…...

Paimon 与 Spark 的集成(一)

Paimon Apache Paimon (incubating) 是一项流式数据湖存储技术&#xff0c;可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。Paimon 采用开放的数据格式和技术理念&#xff0c;可以与 ApacheFlink / Spark / Trino 等诸多业界主流计算引擎进行对接&#xf…...

批量导入SQL Server中的建表、建存储过程和建调度作业的文件

要批量导入SQL Server中的建表、建存储过程和建调度作业的文件&#xff0c;可以按照以下步骤进行操作&#xff1a; 确保你拥有适当的权限&#xff1a;在导入这些文件之前&#xff0c;请确保你具有足够的权限来创建表、存储过程和调度作业。通常需要具备数据库管理员&#xff08…...

启动Hbase出现报错

报错信息&#xff1a;slave1:head: cannot open/usr/local/hbase-2.3.1/bin/../logs/hbasewanggiqi-regionserver-slavel.out’ for reading: No such file or direslave2: head: cannot open/usr/local/hbase-2.3.1/bin/../logs/hbasewangqiqi-regionserver-slave2.out’ for …...

【数据结构】——栈、队列简答题模板

目录 一、栈&#xff08;一&#xff09;栈的基本概念&#xff08;二&#xff09;栈的应用&#xff08;三&#xff09;栈的代码实现&#xff08;四&#xff09;递归算法&#xff08;五&#xff09;栈与队列的区别 二、队列&#xff08;一&#xff09;队列的基本概念&#xff08;…...

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这个章节来完成并行网关与排它条件网关的功能 1、前端 目前就修改了排它条件网关的前端条件部分&#xf…...

【华为OD题库-007】代表团坐车-Java

题目 某组织举行会议&#xff0c;来了多个代表团同时到达&#xff0c;接待处只有一辆汽车&#xff0c;可以同时接待多个代表团&#xff0c;为了提高车辆利用率&#xff0c;请帮接待员计算可以坐满车的接待方案&#xff0c;输出方案数量。 约束: 1.一个团只能上一辆车&#xff0…...

利用servlet实现对书籍书名、单价、数量等信息的添加,计算总价

1.题目要求 利用servlet实现对书籍书名、单价、数量等信息的添加&#xff0c;计算总价。 要求&#xff1a;输入两次表单信息&#xff0c;在一个成功返回的页面里面显示两次的数据。 2.Book实体类 package com.hjj.sevletgk.hw7.book;/*** author:嘉佳 Date:2023/10/8 15:16*…...

一键批量转码:将MP4视频转为MP3音频的简单方法

随着数字媒体设备的普及&#xff0c;视频和音频格式转换的需求也越来越常见。其中&#xff0c;将MP4视频批量转换为MP3音频的需求尤为普遍。无论是为了提取视频中的背景音乐&#xff0c;还是为了在手机或电脑上方便地收听视频音频&#xff0c;这个过程都变得非常重要。接下来我…...

java入门,记一次微服务间feigin请求的问题

一、前言 记录工作中遇到的开发问题&#xff0c;而不是写博客凑字数。 二、微服务调用 1、通过本服务调用另外一个服务&#xff0c;需要定义一个接口&#xff0c;并用FeignClient 注解进行注解 value "服务名" 要调用的服务名 服务得到路径&#xff0c;对应的是c…...

HarmonyOS应用开发者高级认证(88分答案)

看好选择题&#xff0c;每个2分多答对2个刚好88分&#xff0c;祝你顺利。 其它帮扶选择题。 一、判断 只要使用端云一体化的云端资源就需要支付费用&#xff08;错&#xff09;所有使用Component修饰的自定义组件都支持onPageShow&#xff0c;onBackPress和onPageHide生命周期…...

离散Hopfield神经网络分类——高校科研能力评价

大家好&#xff0c;我是带我去滑雪&#xff01; 高校科研能力评价的重要性在于它对高等教育和科研体系的有效运作、发展和提高质量具有深远的影响。良好的科研能力评价可以帮助高校识别其在不同领域的强项和薄弱点&#xff0c;从而制定战略&#xff0c;改进教学和科研&#xff…...

Run highlighted commands using IDE

背景 有时候在 IEDE 的命令行中输入命令&#xff0c;会弹出如下提示&#xff0c;或者命令被着了背景色了&#xff0c;是怎么回事&#xff1f; 其实就是提示你可以使用 IDEA 的功能替代命令行。比如使用ctrlenter或cmdenter之后使用的就是 IDEA 里的功能 直接enter运行&#x…...

vscode文件跳转(vue项目)

在 .vue 文件中&#xff0c;点击组件名打开 方式1&#xff1a; 在 vue 组件名上&#xff0c;桉住ctrl 鼠标左键 // 重新打开一个tab 方式2&#xff1a; 在 vue 组件名上&#xff0c;桉住ctrl shift 鼠标左键 // 在右侧拆分&#xff0c;并打开一个tab .vue文件的跳转 按住 …...

嵌入式Linux系统中内存分配详解

Linux中内存管理 内存管理的主要工作就是对物理内存进行组织&#xff0c;然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处&#xff1a; 1、 用户进程可以直接操作内核对应的内存&#xff0c;破坏…...

4、FFmpeg命令行操作4

ffplay命令-高级选项1 选项 说明 -stats 打印多个回放统计信息,包括显示流持续时间,编解码器参数,流中的当前位置,以及音频/视频同步差值。默认情况下处于启用状态,要显式禁用它则需要指定-nostats。。 -fast 非标准化规范的多媒体兼容优化。 -genpts 生…...

如何通过命令查看某一文件的内容改动和提交记录

1. 查看最近10条的提交记录 一行显示 git log --oneline -102.查看某一个文件的提交记录 git log --oneline -10 文件路径3.查看某个文件的修改内容 查看某次提交的修改 内容 git show bcd9299 查看某次提交某个文件的修改内容git show bcd9299 文件路径4.对比两次提交内容的…...

告别第三方API:SpringBoot项目集成ip2region离线IP库的完整配置流程(附工具类)

SpringBoot深度整合ip2region&#xff1a;从离线IP定位到微服务架构实践 在Web应用开发中&#xff0c;获取用户地理位置信息是常见的需求场景。无论是内容分发、风控系统还是数据分析&#xff0c;IP属地信息都能为业务决策提供重要参考。传统方案通常依赖第三方API服务&#xf…...

【多源融合】Sage-Husa自适应滤波:从理论推导到工程实践

1. Sage-Husa自适应滤波&#xff1a;从数学公式到工程落地 第一次接触Sage-Husa滤波时&#xff0c;我也被满屏的矩阵运算搞得头晕眼花。但当我真正把它用在无人机导航系统里&#xff0c;才发现这套算法的精妙之处——它能让滤波器在传感器性能波动时保持稳定输出。想象一下你的…...

防勒索病毒的最后一道防线:用Syncthing在Linux服务器搭建带版本历史的‘冷备份’

企业级数据安全实战&#xff1a;用Syncthing构建防勒索病毒的历史版本备份系统 勒索病毒已成为中小企业数据安全的头号威胁。2023年全球勒索软件攻击同比增长37%&#xff0c;平均赎金要求高达50万美元&#xff0c;而中小企业往往因预算有限无法部署专业灾备方案。本文将介绍如何…...

Windows Cleaner:三步解决C盘爆红的终极清理指南

Windows Cleaner&#xff1a;三步解决C盘爆红的终极清理指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows电脑卡顿、C盘爆红而烦恼吗&#xff1f…...

【American English】从音标到地道口语:掌握美式发音的核心规则与实战技巧

1. 美式发音的核心规则&#xff1a;从音标到自然语流 很多人学了十几年英语&#xff0c;背了无数单词&#xff0c;但一张口还是"中式英语"。问题往往出在发音上——不是单个音标不准&#xff0c;而是没掌握美式发音的连贯性规则。我教过上千名学生&#xff0c;发现只…...

Java虚拟机精讲【1.0】

第1章 Java体系结构 1.1 认识Java 经历了多年的发展, Java早已由一门单纯的计算机编程语言,演变为一套强大的技术体系平台。根据不同的技术规范, Java设计者们将Java划分为 3 种结构独立但却又彼此依赖的技术体系分支,分别是Java SE(标准版)、 Java EE(企业版)和Java…...

COMSOL声学建模实战:从散射场分析到声子晶体能带计算

1. 散射场分析&#xff1a;从声呐案例理解声波与物体的相互作用 第一次接触COMSOL声学模块时&#xff0c;最让我困惑的就是"散射场"这个概念。直到做了声呐的案例&#xff0c;才真正明白它的物理意义。想象一下&#xff0c;你站在湖边大喊&#xff0c;声音碰到对岸的…...

HEIF Utility:为Windows用户打通苹果照片格式壁垒的3大核心方案

HEIF Utility&#xff1a;为Windows用户打通苹果照片格式壁垒的3大核心方案 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 你是否曾经从iPhone传输照片到Window…...

5分钟掌握HumanEval:AI代码生成评估的黄金标准工具 [特殊字符]

5分钟掌握HumanEval&#xff1a;AI代码生成评估的黄金标准工具 &#x1f680; 【免费下载链接】human-eval Code for the paper "Evaluating Large Language Models Trained on Code" 项目地址: https://gitcode.com/gh_mirrors/hu/human-eval 在人工智能编程…...

009、突破:Mamba架构深度剖析——选择性状态空间与硬件感知算法设计

上周在部署一个长文本理解任务时,又遇到了老问题:Transformer在处理超过4K token的日志流时,显存直接爆了。尝试了各种稀疏注意力、窗口化技巧,效果总是不尽如人意——要么丢掉了全局信息,要么推理速度慢得无法上线。就在对着nvprof报告发呆时,突然想起去年底刷到的Mamba…...