当前位置: 首页> 健康> 科研 > 小孩学编程哪家好_凡科系统官网_合肥网站优化平台_外链工具在线

小孩学编程哪家好_凡科系统官网_合肥网站优化平台_外链工具在线

时间:2025/7/18 5:48:40来源:https://blog.csdn.net/weixin_45450206/article/details/142716994 浏览次数:0次
小孩学编程哪家好_凡科系统官网_合肥网站优化平台_外链工具在线

最大矩形

# coding=utf-8
# Creator:Mr.Zhao# 最大矩形
"""
给定一个仅包含0和1、
大小为rowsxcols的二维二进制矩阵,
找出只包含1的最大矩形,并返回其面积。
"""class Solution1:def maximalRectangle(self, matrix):if not matrix:returnm = len(matrix)  # 行n = len(matrix[0])  # 列juxing_all = []# 列出所有矩形的可能性for i in range(1, m + 1):for j in range(1, n + 1):juxing_all.append([i, j])# print(juxing_all)max_junxing = 0for i, j in juxing_all:# 取出列表中所有可能的矩形for x in range(m):for y in range(n):temp = 0# x+i等于m就代表取到了最后一行了 剩下不需要了# y+j同理的呢if x + i > m or y + j > n:break# 例如 i j为2 4  matrix[x:x+i] 取出两行 row[y:y+j]取出四列temp_lst = [row[y:y + j] for row in matrix[x:x + i]]# print(i, j, temp_lst)flag = Falsefor lst in temp_lst:if "0" in lst:flag = Trueif flag:continue  # 一定是continue 因为下一列还要算# print(i, j, temp_lst)for hang in range(len(temp_lst)):for lie in range(len(temp_lst[0])):temp += int(temp_lst[hang][lie])# print(temp_lst)if temp > max_junxing:max_junxing = temp# print(max_junxing)return max_junxingclass Solution:def maximalRectangle(self, matrix) -> int:if not matrix: return 0m, n = len(matrix), len(matrix[0])# 记录当前位置上方连续“1”的个数pre = [0] * (n + 1)res = 0for i in range(m):for j in range(n):# 前缀和pre[j] = pre[j] + 1 if matrix[i][j] == "1" else 0print(pre)# 单调栈stack = [-1]for k, num in enumerate(pre):while stack and pre[stack[-1]] > num:  # 上一个数字大于当前的数 这个条件满足才是矩形 其实就要计算长度了index = stack.pop()# pre[index]为高# k - stack[-1] - 1 是长度# 为什么要不停的出栈呢 其实比如1322这个来说 13肯定不是矩形了 唯一有矩形可能的就是322了啊res = max(res, pre[index] * (k - stack[-1] - 1))stack.append(k)return resmatrix = [["1", "0", "1", "0", "0"], ["1", "0", "1", "1", "1"], ["1", "1", "1", "1", "1"], ["1", "0", "0", "1", "0"]]
a = Solution()
# a.maximalRectangle(matrix)"""
# 假设有一个双重列表
list_of_lists = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]
]# 取出区域(行1到2,列2到4)的值
region_values = [row[1:3] for row in list_of_lists[0:2]]
print(region_values)  # 输出: [[2, 3], [6, 7]]
"""
"""这道题解法有很多啊 可以先看Solution1的解法看的比较简单 要点都注释了 但是会超时对于Python来说还有numpy的解法,这个应该不会超时你们可以尝试一下
"""
关键字:小孩学编程哪家好_凡科系统官网_合肥网站优化平台_外链工具在线

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: