LeetCode 418. 屏幕可显示句子的数量(DP)*

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个 rows x cols 的屏幕和一个用 非空 的单词列表组成的句子,请你计算出给定句子可以在屏幕上完整显示的次数。

注意:
一个单词不能拆分成两行。
单词在句子中的顺序必须保持不变。
在一行中 的两个连续单词必须用一个空格符分隔。
句子中的单词总量不会超过 100。
每个单词的长度大于 0 且不会超过 10。
1 ≤ rows, cols ≤ 20,000.

示例 1:
输入:
rows = 2, cols = 8, 
句子 sentence = ["hello", "world"]
输出:
1
解释:
hello---
world---
字符 '-' 表示屏幕上的一个空白位置。示例 2:
输入:
rows = 3, cols = 6, 
句子 sentence = ["a", "bcd", "e"]
输出:
2
解释:
a-bcd- 
e-a---
bcd-e-
字符 '-' 表示屏幕上的一个空白位置。示例 3:
输入:
rows = 4, cols = 5, 
句子 sentence = ["I", "had", "apple", "pie"]
输出:
1
解释:
I-had
apple
pie-I
had--
字符 '-' 表示屏幕上的一个空白位置。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sentence-screen-fitting
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 参考大佬的题解
  • 先看看1行能不能放下完整的句子
  • 然后不能放下完整句子的空位,从 i 单词开始放(i=0…n-1),下一行的开头是哪个单词
class Solution {
public:int wordsTyping(vector<string>& sentence, int rows, int cols) {int n = sentence.size(), i, j, len = 0, ans = 0;vector<int> wordlen(sentence.size());for(i = 0; i < n; ++i){len += sentence[i].size()+1;wordlen[i] = sentence[i].size();}len--;//一个句子的长度if(cols >= len)//能放下完整的句子{ans += cols/(len+1)*rows;//带一个空格能放下几个句子cols = cols%(len+1);//只用考虑剩余的不完整空格if(cols%(len+1) == len)//不带空格正好还有一个位置{ans += rows;return ans;}}vector<int> dp(n);//每行从i单词开始填,可以填到哪个单词for(i = 0 ;i < n; i++){j = i;len = 0;while(len+wordlen[j] <= cols){len += wordlen[j]+1;//+1是空格j = (j+1)%n;}dp[i] = j;//i单词开始放,放完该行可以到j单词(不含j)}for(i = 0, j = 0; i < rows; i++){if(dp[j] < j)//放满了一行,dp[j]跑到 j 前面去了ans++;j = dp[j];//下一行从dp[j]单词开始放}return ans;}
};

0 ms 7.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

网站服务器令牌获取,adobe - 获取Adobe Sign访问令牌以进行服务器到服务器身份验证 - 堆栈内存溢出...

_bananabread有正确的想法。 按照本网站上的步骤操作&#xff1a;直到您使用refresh_token获得JSON响应&#xff0c;这就是您所需要的。接下来&#xff0c;您需要制作刷新令牌请求&#xff0c;以便在每次需要使用它时刷新令牌&#xff0c;并返回一个全新的OAuth令牌。这是一个J…

try…finally与嵌套及自定义异常抛出

try...finally... try...finally...语句用来表达这样的情况&#xff1a;在程序中&#xff0c;如果一个段代码必须要执行&#xff0c;即无论异常是否产生都要执行&#xff0c;那么此时就需要使用finally。 比如文件关闭&#xff0c;释放锁&#xff0c;把数据库连接返还给连接池…

LeetCode 568. 最大休假天数(DP)

文章目录1. 题目2. 解题1. 题目 力扣想让一个最优秀的员工在 N 个城市间旅行来收集算法问题。 但只工作不玩耍&#xff0c;聪明的孩子也会变傻&#xff0c;所以您可以在某些特定的城市和星期休假。 您的工作就是安排旅行使得最大化你可以休假的天数&#xff0c;但是您需要遵守…

安装数据库windows 安装redmine 详解

时间紧张&#xff0c;先记一笔&#xff0c;后续优化与完善。 近来公司有须要&#xff0c;要找一个项目管理工具&#xff0c;网上看了redmine还不错&#xff0c;终究项目经理选择了它&#xff0c;让我把平台给搭建起来并熟悉其中的功能。搭建的过程中超过了我的预计还破费了点工…

模块概念与使用及注意事项

1 模块概念 模块就是包含了python代码的文本文件&#xff0c;通俗讲&#xff0c;一个py文件就是一个模块。 2 使用模块(import) 比如&#xff0c;我们单独编写了一个模块&#xff0c;命名为mymodule.py&#xff0c;在该模块中我们定义一些函数和类&#xff0c;我们如何在test.…

魔兽世界转服务器显示完成,魔兽世界怀旧服:TAQ变简单了,为什么还是出现了AFK大潮?...

魔兽世界怀旧服在开服一年多以后&#xff0c;即将在2020年12月3日&#xff0c;迎来经典60年代的收官副本-第六阶段纳克萨玛斯大墓地(NAXX)。在差不多的时间段内&#xff0c;魔兽世界正式服也将上线全新的9.0版本-暗影国度。囧王者估计&#xff0c;在即将到来的12月份里面&#…

LeetCode 317. 离建筑物最近的距离(逆向BFS)*

文章目录1. 题目2. 解题2.1 正常思维BFS2.2 逆向思考BFS1. 题目 你是个房地产开发商&#xff0c;想要选择一片空地 建一栋大楼。 你想把这栋大楼够造在一个距离周边设施都比较方便的地方&#xff0c;通过调研&#xff0c;你希望从它出发能在 最短的距离和 内抵达周边全部的建筑…

Ubuntu 运行Asp.net MVC3

1 先通过SVN获取最新版的Asp.net MVC3代码 2 用Monodevelop打开后&#xff0c;进入Web项目的引用,删除标了红色的引用 3 添加引用“System.Web.Mvc.dll”和“System.Web.WebPages.Deployment.dll” 4 重新编译&#xff0c;然后删除Web项目的bin下的“Microsoft.Web.Infrastruct…

LeetCode 431. 将 N 叉树编码为二叉树(递归/层序)

文章目录1. 题目2. 解题2.1 递归2.2 BFS1. 题目 设计一个算法&#xff0c;可以将 N 叉树编码为二叉树&#xff0c;并能将该二叉树解码为原 N 叉树。 一个 N 叉树是指每个节点都有不超过 N 个孩子节点的有根树。 类似地&#xff0c;一个二叉树是指每个节点都有不超过 2 个孩子节…

包概念与__init__注意事项

1.包的概念 为了组织好模块&#xff0c;将多个模块分为一个包。包是python模块文件所在的目录&#xff0c;且该目录下必须存在__init__.py文件。常见的包结构如下&#xff1a; package_a ├── __init__.py ├── module_a1.py └── module_a2.py package_b ├── _…

服务器上有涉密文件,涉密文件保密管理规定

为贯彻落实国家和省、市、区保密局对涉密文件资料管理工作的要求&#xff0c;进一步做好我办涉密文件资料管理&#xff0c;特制定本规定。一、涉密文件的拟制、印刷、传递、承办、借阅、保管、归档、移交和销毁&#xff0c;必须严格履行审批、清点、登记、签收等手续。二、涉密…

服务器文件同步管理

服务器文件同步管理 原文 http://www.cnblogs.com/yanxiaodi/archive/2011/03/21/2296462.html 前几天有台服务器电源坏了&#xff0c;还好数据没有丢。因此必须做好服务器文件内容的备份。服务器主要是用来提供网站服务&#xff0c;带着一个数据库&#xff0c;数据库可以用分发…

LeetCode 774. 最小化去加油站的最大距离(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 假设我们在一条水平数轴上&#xff0c;列表 stations 来表示各个加油站的位置&#xff0c;加油站分别在 stations[0], stations[1], ..., stations[N-1] 的位置上&#xff0c;其中 N stations.length。 现在我们希望增加 K 个新的加油站&…

修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...

用ng的$http服务发起ajax请求&#xff0c;php返回的JSON数据格式要正确&#xff01;一开始我的php页面是这样返回数据的&#xff1a;if($result){$oid mysqli_insert_id($conn);echo "{msg:succ,oid:$oid}";}else{echo "{msg:error}";}然后总是报错&#…

python编码规范与命名规范

编码规范 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 每行不超过80个字符&#xff0c;Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号.例如&#xff1a; x (This will build a …

Linux学习笔记(4) - 文件系统

4.1 什么是文件系统 文件系统表示存储在计算机上的文件和目录的数据结构&#xff0c;也可以用于存储文件的分区或磁盘&#xff0c;操作系统通过文件系统可以方便地查询和访问其中所包含的磁盘块。在Linux系统中&#xff0c;每个分区都是一个文件系统&#xff0c;都有自己的目录…

LeetCode 644. 最大平均子段和 II(二分查找)*

文章目录1. 题目2. 解题2.1 暴力超时2.2 二分查找1. 题目 给定一个包含 n 个整数的数组&#xff0c;找到最大平均值的连续子序列&#xff0c;且长度大于等于 k。并输出这个最大平均值。 样例 1: 输入: [1,12,-5,-6,50,3], k 4 输出: 12.75 解释: 当长度为 5 的时候&#xff…

python基础学习总结

1.python历史 Guido 89年圣诞开写 91年编辑器问世 优点与缺点 优点&#xff1a;简单、易学、免费开源、高层语言 可移植、解释、面向对象、扩展 丰富库、规范代码 缺点&#xff1a;运行速度、国内市场小、中文资料少 2.模式&#xff1a;文本、交互、集成开发 程序原理&am…

学生管理系统代码赏析

# 添加、删除、显示学生信息&#xff08;保存&#xff09; # 保存所有学生信息 students {} # 创建 ID 1000 # 控制系统是否退出 flag True # 从文件中读取学生信息 def load_students(): # 加载学生信息从文件中 stu_file open("students.txt",&quo…

LeetCode 527. 单词缩写(Trie树)

文章目录1. 题目2. 解题1. 题目 给定一个由n个不重复非空字符串组成的数组&#xff0c;你需要按照以下规则为每个单词生成最小的缩写。 初始缩写由起始字母省略字母的数量结尾字母组成。若存在冲突&#xff0c;亦即多于一个单词有同样的缩写&#xff0c;则使用更长的前缀代替…