最大化间隔

最大化间隔

每周挑战 298

穆罕默德·s·安瓦尔 (mohammad s. anwar) 每周都会发出“每周挑战”,让我们所有人都有机会为每周两次的任务提出解决方案。这对我们所有人来说都是练习编码的好方法。

挑战,我的解决方案

任务 1:最大平方

任务

给你一个只有 0 和 1 的 m x n 二进制矩阵。

编写一个脚本来查找仅包含 1 的最大正方形并返回其面积。

我的解决方案

我的主要函数首先检查矩阵每行的列数是否正确

def maximal_square(matrix: list[list[int]]) -> int:    rows = len(matrix)    cols = len(matrix[0])    maximum_size = 0    for row in range(rows):        if len(matrix[row]) != cols:            raise valueerror("row %s has the wrong number of columns", row)

然后它会迭代矩阵中的每个单元格。如果该单元格中的项目是 1,则它会检查从该位置开始的正方形的大小。 max_side 变量也会被计算以确保我们不会超出范围。我们跟踪 maximum_size 值并返回最大的值。

    for row in range(rows):        for col in range(cols):            if matrix[row][col] == 1:                max_side = min(rows-row, cols-col)                size = find_square_from_point(matrix, row, col, max_side)                if size > maximum_size:                    maximum_size = size    return maximum_size

find_square_from_point 函数的正确性令人沮丧。实际上,在找到一个我很乐意提交的解决方案之前,我尝试了几次。逻辑非常简单。考虑正方形:

. b c db b c dc c c dd d d d

随着正方形尺寸的增加,我只需要检查每个正方形的底部和右侧,因为我知道正方形的内部部分已经被检查过。因此,对于第一次迭代(四个区域),我检查 b 个单元格。下一次迭代(9 的区域),我检查 c 个单元格,依此类推。

这是函数的代码:

def find_square_from_point(matrix, x: int, y: int, max_side: int) -> int:    side = 1    for s in range(1, max_side):        all_ones = true        for i in range(s+1):            if matrix[x+i][y+s] == 0 or matrix[x+s][y+i] == 0:                all_ones = false                break        if not all_ones:            break        side += 1    return side ** 2

示例

$ ./ch-1.py "[[1, 0, 1, 0, 0],[1, 0, 1, 1, 1],[1, 1, 1, 1, 1],[1, 0, 0, 1, 0]]"4$ ./ch-1.py "[[0, 1],[1, 0]]"1$ ./ch-1.py "[[0]]"0

任务 2:正确的间隔

任务

给你一个 @intervals 数组,其中 $intervals[i] = [starti, endi] 并且每个 starti 都是唯一的。

间隔 i 的正确间隔是间隔 j,使得 startj >= endi 并且 startj 最小化。请注意,i 可能等于 j。

编写一个脚本,返回每个区间 i 的右区间索引数组。如果区间 i 不存在正确的区间,则将 -1 置于索引 i 处。

我的解决方案

对于这项任务,我有一个可行的解决方案,但我不相信它是最有效的。对于每个间隔,我设置三个变量:

end_i 值存储我们需要考虑的结束(第二个)值值lowest_j存储迄今为止找到的最低起始值(如果没有找到则为none)。index_j变量存储了lowest_j值的索引,如果没有找到则为-1。

然后我有一个在间隔上迭代的内部循环。如果 start_j 值(区间中的第一个值)大于或等于 end_i 且低于 lower_j,我会更新 lower_j 和 index_j 值。

def right_interval(intervals: list[list[int]]) -> list:    best_intervals = []    for i in intervals:        # calculate the right interval for this interval        end_i = i[1]        lowest_j = none        index_j = -1        for j in range(len(intervals)):            start_j = intervals[j][0]            if start_j >= end_i:                if lowest_j is none or start_j < lowest_j:                    # this is the best matching interval                    lowest_j = start_j                    index_j = j        best_intervals.append(index_j)    return best_intervals

对于来自命令行的输入,我会获取一个整数列表并自动将它们配对。

示例

$ ./ch-2.py 3 4 2 3 1 2[-1, 0, 1]$ ./ch-2.py 1 4 2 3 3 4[-1, 2, -1]$ ./ch-2.py 1 2[-1]$ ./ch-2.py 1 4 2 2 3 4[-1, 1, -1]

以上就是最大化间隔的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:46:03
下一篇 2025年12月13日 18:46:12

相关推荐

  • 如何在 Google Colab 上运行 stable-diffusion–large-turbo

    stable-diffusion-3.5-large-turbo 是一种高精度文本到图像模型。 本指南将解释如何在 google colab 上设置和运行模型。 先决条件 访问拥抱脸。 要使用 stable-diffusion-3.5-large-turbo,您需要一个 huggingface 帐户…

    2025年12月13日 好文分享
    000
  • 在 PyTorch 中移动 MNIST

    请我喝杯咖啡☕ *我的帖子解释了移动 mnist。 movingmnist() 可以使用 moving mnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 split(optional-de…

    2025年12月13日 好文分享
    000
  • PyTorch 中的 FashionMNIST

    请我喝杯咖啡☕ *我的帖子解释了 fashion-mnist。 fashionmnist() 可以使用 fashion-mnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 train(opt…

    2025年12月13日
    000
  • 使用 Python、LangChain 和矢量搜索构建可扩展的 AI 聊天应用程序

    构建可投入生产的人工智能聊天应用程序需要强大的矢量存储和高效的工作流程管理。让我们探索如何使用 astra db 和 langflow 创建它。 环境设置 首先,让我们使用所需的依赖项设置 python 环境: from langchain.vectorstores import astradbfr…

    2025年12月13日
    000
  • 通过 Ready Mailing Team 的首席执行官电子邮件列表释放战略业务增长

    在商业领域,与合适的人建立联系可以定义成功。 ready mailing team 的首席执行官电子邮件列表是您到达决策顶峰的终极工具——首席执行官、总裁和各行业的顶级领导者。无论您是想提出突破性的想法、促进合作还是加强您的营销活动,此电子邮件列表都可以弥合您的愿景与能够将其变为现实的领导者之间的差…

    2025年12月13日
    000
  • 用于动态代码的强大 Python 元编程技术

    作为一名 python 开发人员,我一直对该语言操纵自身的能力着迷。元编程是一种编写在运行时生成或修改其他代码的代码的艺术,它为创建灵活和动态的程序开辟了可能性的世界。在本文中,我将分享七种强大的元编程技术,这些技术彻底改变了我的 python 开发方法。 装饰器:修改函数行为 装饰器是 pytho…

    2025年12月13日
    000
  • Solving Word Cookies Puzzles: A Python Adventure

    玩游戏是让大脑从一天的压力中放松下来的一种方式,或者只是从工作中休息一下。然而,有时,游戏本身就会带来压力,所以我认为“word cookies”就是这样,这是一款有趣的益智游戏,你会得到一组打乱的字母,并被要求解决其中包含的单词。 随着我在游戏中的进展,解决问题变得越来越困难,几乎没有资源可以帮助…

    2025年12月13日 好文分享
    000
  • 开源合作进展

    概述 最近,我在开发一个将 slack bolt 与 sanic 集成的项目时遇到了一个有趣的挑战,sanic 是一个我以前不熟悉的框架,这导致了一些意外的弃用警告和类型相关的问题。我将向您介绍我是如何解决这个问题的、我学到的经验教训以及解决问题的精确代码更改。 sanic 和 slack bolt…

    2025年12月13日
    000
  • 为什么我的多线程 API 仍然很慢?

    我的 api 遇到问题,希望有人可以提供帮助。尽管添加了多线程,但性能提升远没有达到我的预期。理想情况下,如果一个线程需要 1 秒来完成一项任务,那么并发运行的 10 个线程也应该需要大约 1 秒(这是我的理解)。然而,我的 api 响应时间仍然很慢。 问题 我正在使用 fastapi 以及 pla…

    2025年12月13日
    000
  • python爬虫遇到反爬怎么搞

    Python爬虫应对反爬机制可采取措施有:1. 使用代理;2. 设置随机延迟;3. 绕过验证码;4. 分析网站结构;5. 利用爬虫框架。其中,使用代理可以隐藏真实IP地址,而设置随机延迟则避免触发反爬机制,使用爬虫框架可简化应对反爬机制的过程。 Python爬虫如何应对反爬机制? 直接回答: Pyt…

    2025年12月13日
    000
  • # 使用 ThreadPoolExecutor 增强你的 Python 任务

    当涉及到在 python 中同时运行多个任务时,concurrent.futures 模块是一个强大而简单的工具。在本文中,我们将探讨如何使用 threadpoolexecutor 并行执行任务,并结合实际示例。 为什么使用threadpoolexecutor? 在python中,线程非常适合i/o…

    2025年12月13日
    000
  • Python 中的异常处理

    本文探讨了 python 中用于处理异常的各种技术,包括 try- except 块、自定义异常以及异常链接和丰富等高级功能。 python 提供了一个强大的异常处理框架,它不仅允许程序员实现防止崩溃的代码,而且还提供反馈并保持应用程序稳定性。此外,它使开发人员能够使用 try- except 块、…

    2025年12月13日
    000
  • PyTorch 中的 MNIST

    请我喝杯咖啡☕ *我的帖子解释了 mnist。 mnist() 可以使用 mnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 train(optional-default:false-typ…

    2025年12月13日
    000
  • PyTorch 中的 EMNIST

    请我喝杯咖啡☕ *我的帖子解释了 emnist。 emnist()可以使用emnist数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 split(required-type:str)。 *可以设置“…

    2025年12月13日
    000
  • 用离散语义熵和困惑度检测法学硕士的幻觉

    在使用大型语言模型 (llm) 时,发现幻觉可能很棘手。我们可以使用困惑度、蕴涵和离散语义熵来更好地识别潜在的幻觉,而不是仅仅依靠法学硕士作为判断(这仍然可能会出错,并且许多评估框架仅使用它来检测幻觉)。虽然我在这里使用法学硕士来检测蕴涵,但这不是必要的。也就是说,这种方法最适合那些有直接、事实答案…

    2025年12月13日
    000
  • PyTorch 中的 KMNIST

    请我喝杯咖啡☕ *我的帖子解释了 kmnist。 kmnist() 可以使用 kmnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 train(optional-default:true-t…

    2025年12月13日
    000
  • python中entry的用法

    Entry 小部件是 tkinter 中用于获取单行文本输入的控件。可用于设置属性,如宽度、可见性、状态和绑定变量。事件处理包括回车、按键松开、获取/失去焦点。示例代码演示了如何在 GUI 中使用 Entry 小部件,带标签和输入框。 Python tkinter 中 Entry 小部件 Entry…

    2025年12月13日
    000
  • main在python中的用法

    Python 中的 main() 函数是程序的入口点,是程序开始执行的第一个函数。优点:模块化、可测试性。使用场景:希望将程序逻辑与模块导入分开或在程序启动时执行特定任务。语法:def main(): # 程序逻辑。 main() 在 Python 中的用法 简介 main() 函数是 Python…

    2025年12月13日
    000
  • Python中addict库使用Dict的类

    利用addict库,可以轻松在Python中创建可像类访问的字典(dict),从而简化字典的使用:导入addict库中的Dict类,创建Dict对象。采用点运算符(.)对象化访问字典键,如同访问类属性。支持链式调用,方便访问嵌套数据结构。提供简洁语法,提高代码可读性。避免KeyError异常,优雅地…

    2025年12月13日
    000
  • 使用Python和FastAPI实现MinIO断点续传功能

    使用MinIO SDK和FastAPI框架,可以在Python应用程序中实现断点续传。步骤依次为:1. 安装依赖项,2. 初始化MinIO客户端,3. 实现文件上传处理,4. 处理断点请求,5. 测试断点续传。通过设置“x-amz-upload-state”请求头部,可以暂停和恢复大型文件上传,而无…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信