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

网站广告动态图怎么做本机做网站如何访问

网站广告动态图怎么做,本机做网站如何访问,整个网站都在下雪特效怎么做,郑州网络推广电话LeetCode 第158题:用Read4读取N个字符 II 题目描述 给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法来读取 n 个字符。 read4 方法: API read4 可以从文件中读取 4 个连续的字符,并且将它…

LeetCode 第158题:用Read4读取N个字符 II

题目描述

给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法来读取 n 个字符。

read4 方法:

  • API read4 可以从文件中读取 4 个连续的字符,并且将它们写入缓存数组 buf 中。
  • 返回值为实际读取的字符个数。

注意:read4() 有自己的文件指针,就像 C 语言中的 FILE *fp 一样。

难度

困难

题目链接

点击在LeetCode中查看题目

示例

示例 1:

输入: file = "abc", n = 4
输出: 3
解释: 当执行你的 read 方法后,buf 需要包含 "abc"。 文件一共 3 个字符,因此返回 3。 注意 "abc" 是文件的内容,不是 buf 的内容。

示例 2:

输入: file = "abcde", n = 5
输出: 5
解释: 当执行你的 read 方法后,buf 需要包含 "abcde"。文件共 5 个字符,因此返回 5。

示例 3:

输入: file = "abcdABCD1234", n = 12
输出: 12
解释: 当执行你的 read 方法后,buf 需要包含 "abcdABCD1234"。文件一共 12 个字符,因此返回 12。

示例 4:

输入: file = "leetcode", n = 5
输出: 5
解释: 当执行你的 read 方法后,buf 需要包含 "leetc"。文件中一共 5 个字符,因此返回 5。

提示

  • 1 <= file.length <= 500
  • n >= 1
  • 你 不能 直接操作该文件,只能通过 get 方法来获取文件内容。
  • 请 不要 修改输出结果数组。
  • 假定所有字符都是 ASCII 码表中的字符。

解题思路

方法:队列

使用队列存储未使用的字符。
关键点:

  1. 使用队列存储read4读取的未使用字符
  2. 当队列为空时,使用read4读取新的字符
  3. 从队列中取出字符直到达到目标字符数或队列为空
  4. 处理边界情况
  5. 返回实际读取的字符数

时间复杂度:O(n),其中n是要读取的字符数。
空间复杂度:O(1),只需要固定大小的队列。

代码实现

C# 实现

public class Solution {private Queue<char> queue = new Queue<char>();public int Read(char[] buf, int n) {int total = 0;char[] temp = new char[4];while (total < n) {if (queue.Count == 0) {int count = Read4(temp);if (count == 0) break;for (int i = 0; i < count; i++) {queue.Enqueue(temp[i]);}}if (queue.Count == 0) break;buf[total++] = queue.Dequeue();}return total;}
}

Python 实现

class Solution:def __init__(self):self.queue = []def read(self, buf: List[str], n: int) -> int:total = 0temp = [None] * 4while total < n:if not self.queue:count = read4(temp)if count == 0:breakself.queue.extend(temp[:count])if not self.queue:breakbuf[total] = self.queue.pop(0)total += 1return total

C++ 实现

class Solution {
private:queue<char> q;public:int read(char *buf, int n) {int total = 0;char temp[4];while (total < n) {if (q.empty()) {int count = read4(temp);if (count == 0) break;for (int i = 0; i < count; i++) {q.push(temp[i]);}}if (q.empty()) break;buf[total++] = q.front();q.pop();}return total;}
};

性能分析

各语言实现的性能对比:

实现语言执行用时内存消耗特点
C#92 ms38.2 MB实现简洁,性能适中
Python156 ms16.8 MB代码最简洁
C++24 ms9.6 MB性能最优

补充说明

代码亮点

  1. 使用队列存储未使用的字符
  2. 处理了各种边界情况
  3. 代码结构清晰,易于维护

常见错误

  1. 没有处理文件结束的情况
  2. 没有处理n大于文件长度的情况
  3. 队列为空时的处理不当

相关题目

  • 157. 用Read4读取N个字符
  • 68. 文本左右对齐
  • 43. 字符串相乘
http://www.dtcms.com/a/456550.html

相关文章:

  • 万网买的网站备案淘宝刷单网站开发
  • 睢宁建设局网站网址英文
  • 网站开发 招聘 龙岩找人做app网站吗
  • 企业seo网站优化设计网站开发毕业设计论文
  • 连云港网站设计企业建设网站的
  • 手机网站怎么提高关键词东莞建外贸企业网站
  • 用哪个程序做网站收录好牌具网站广告怎么做
  • 建设局网站安全自查情况报告wordpress 网站域名
  • 怎样免费建设免费网站区块链开源平台
  • 广告设计制作属于什么行业白杨seo博客
  • 购物商城网站设计方案价格网官网
  • 建设方面的知识 网站智能印刷在线设计平台
  • 做视频导航网站有哪些wordpress鼠标轨迹
  • 安阳网站建设服务租赁服务器做电影网站
  • 简述网站制作的过程北京网页制作培训班
  • 全国首批9所重点马院网站建设2022年7到8月份的十大新闻
  • 南宁网站制作计划wordpress 如何调用函数
  • 网站建设seo优化重庆森林经典台词梁朝伟
  • 网站建设合同 下载传奇手游官方网站
  • 烟台福山建设规划局网站企业网站 app
  • 安装网站提示dir网站建设实施进度与资源管理
  • 网站建设适合女生吗wordpress栏目指定二级域名
  • 网站模糊设计深圳网站建设软件定制公司
  • 深圳企业网站建设制作中国网站排名网
  • 电子商务网站怎么建深圳分销网站设计公司
  • 汽车设计网站大全wordpress 添加 links
  • 做网站后台的叫什么企业网站建设公司注意哪些问题
  • 徐州建站平台从化定制型网站建设
  • 企业网站管理系统cms源码下载wordpress主题制作汉化
  • 中国建设教育协会网站培训中心crm客户管理系统 项目