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

【LeetCode - 每日1题】设计电子表格

🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)


🌵目录🌵

  • 难度 ⭐⭐⭐
  • 题目回顾
  • ✅解题思路
    • 💖概述
    • 💓核心思路
  • ✅代码实现
  • ✅代码分析
  • ✅ 复杂度分析
  • ✅ 测试用例验证
    • ✅ 示例1
    • ✅ 示例2
    • ✅ 边缘用例
  • 💖总结
  • 🤝 期待与你共同进步
  • 📚 参考文档


难度 ⭐⭐⭐


题目回顾

电子表格是一个网格,它有 26 列(从 ‘A’ 到 ‘Z’)和指定数量的 rows。每个单元格可以存储一个 0 到 10**5 之间的整数值。
请你实现一个 Spreadsheet 类:

  • Spreadsheet(int rows) 初始化一个具有 26 列(从 ‘A’ 到 ‘Z’)和指定行数的电子表格。所有单元格最初的值都为 0 。
  • void setCell(String cell, int value) 设置指定单元格的值。单元格引用以 “AX” 的格式提供(例如,“A1”,“B10”),其中字母表示列(从 ‘A’ 到 ‘Z’),数字表示从 1 开始的行号。
  • void resetCell(String cell) 重置指定单元格的值为 0 。
  • int getValue(String formula) 计算一个公式的值,格式为 “=X+Y”,其中 X 和 Y 要么 是单元格引用,要么非负整数,返回计算的和。

注意: 如果 getValue 引用一个未通过 setCell 明确设置的单元格,则该单元格的值默认为 0 。

示例 1:

输入:
[“Spreadsheet”, “getValue”, “setCell”, “getValue”, “setCell”,
“getValue”, “resetCell”, “getValue”] [[3], [“=5+7”], [“A1”, 10],
[“=A1+6”], [“B2”, 15], [“=A1+B2”], [“A1”], [“=A1+B2”]]
输出:
[null, 12, null, 16, null, 25, null, 15]
解释
Spreadsheet spreadsheet = new Spreadsheet(3); // 初始化一个具有 3 行和 26 列的电子表格
spreadsheet.getValue(“=5+7”); // 返回 12 (5+7)
spreadsheet.setCell(“A1”, 10); // 设置 A1 为 10
spreadsheet.getValue(“=A1+6”); // 返回 16 (10+6)
spreadsheet.setCell(“B2”, 15); // 设置 B2 为 15
spreadsheet.getValue(“=A1+B2”); // 返回 25 (10+15)
spreadsheet.resetCell(“A1”); // 重置 A1 为 0
spreadsheet.getValue(“=A1+B2”); // 返回 15 (0+15)

提示:

  • 1 <= rows <= 10**3
  • 0 <= value <= 10**5
  • 公式保证采用 “=X+Y” 格式,其中 X 和 Y
  • 要么是有效的单元格引用,要么是小于等于 10**5 的 非负 整数。
  • 每个单元格引用由一个大写字母 ‘A’ 到 ‘Z’ 和一个介于 1 和 rows 之间的行号组成。 总共 最多会对 setCell、resetCell 和 getValue 调用 10**4 次。

✅解题思路

💖概述

实现一个电子表格类,支持设置单元格值、重置单元格值以及解析简单加法公式(格式为 =X+Y)。核心是通过字典存储非零单元格,未设置的单元格默认为0。

💓核心思路

  1. ​​存储设计​​:使用字典 data存储被修改过的单元格(键为单元格名称如 “A1”,值为整数),未存储的单元格默认值为0。
  2. 公式解析​​:
    • 去掉公式开头的 =,按 +分割成两部分。
    • 判断每部分是​​单元格引用​​(首字母大写)还是​​数字字符串​​:
      • 单元格引用:从 data中取值(不存在则返回0)。
      • 数字字符串:直接转为整数。
    • 将两部分结果相加返回。
      ​​
  3. 重置操作​​:直接从字典中移除单元格,使其恢复默认值0。

✅代码实现

class Spreadsheet:def __init__(self, _):self.data = {}def setCell(self, cell: str, value: int
http://www.dtcms.com/a/393031.html

相关文章:

  • Spring 中 REQUIRED 事务的回滚机制详解
  • C++框架中基类修改导致兼容性问题的深度分析与总结
  • 学习笔记-SpringBoot项目配置
  • Java数据结构——时间和空间复杂度
  • 如何在接手新项目时快速上手?
  • Zynq开发实践(SDK之自定义IP2)
  • 数据库相关锻炼
  • PostgreSQL 入门与实践
  • pytorch基本运算-PyTorch.Tensor张量数据类型
  • 数据结构与算法 第三章 栈
  • Spring Boot 整合 MyBatis:从入门到企业级实践
  • FHook Java 层全函数 HOOK 框架
  • TDengine 聚合函数 STDDEV_POP 用户手册
  • 【 嵌入式Linux应用开发项目 | Rockit + FFmpeg+ Nginx】基于泰山派的IPC网络摄像头
  • 机器学习中的高准确、低召回
  • Go基础:Go基本数据类型详解
  • 项目管理(一)
  • 【STM8L101 执行函数FLASH_ProgramBlock出现问题】
  • ​​[硬件电路-278]:双向双电源电平转换收发器74AXP2T45DCH功能概述、管脚定义
  • 音视频同步的原理和实现方式
  • BUG调试案例十八:TPS5430输出震荡问题案例
  • Python读取Excel文件里面指定列中的指定范围行
  • C语言入门教程 | 阶段二:控制结构详解(条件语句与 switch 语句)
  • Linux 4.x hook系统调用的问题
  • 了解 Highcharts 响应式功能:构建适配各种屏幕的图表界面
  • 逻辑分析仪解码脚本实例解析——UART
  • 垃圾回收中的STW是什么?
  • redis未授权漏洞扫描器
  • LTE/EPC 架构
  • ANSYS学习