Python 刷Leetcode题库,顺带学英语单词(27)

简介: Python 刷Leetcode题库,顺带学英语单词(27)

Largest Rectangle in Histogram


Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.   [#84]

20210801085615895.png


Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].

The largest rectangle is shown in the shaded area, which has area = 10 unit.


Example:
Input: [2,1,5,6,2,3]
Output: 10


题意:给定n个表示宽度为1的直方图之高度数组,求直方图中最大矩形的面积。

这题还是能用子序列推导式,子序列的最小值*宽度即面积:

>>> sub = lambda s:[s[i:j] for i in range(len(s)) for j in range(i+1,len(s)+1)]
>>> lst = [2,1,5,6,2,3]
>>> max([len(i)*min(i) for i in sublist(lst)])
10
>>> 
>>> lst = [2,1,3,5,2,3]
>>> max([len(i)*min(i) for i in sublist(lst)])
8
>>>




Merge Sorted Array


Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.  [#88]


Note:

The number of elements initialized in nums1 and nums2 are m and n respectively.

You may assume that nums1 has enough space (size that is equal to m + n) to hold additional elements from nums2.



Example:
Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Constraints:
-10^9 <= nums1[i], nums2[i] <= 10^9
nums1.length == m + n
nums2.length == n


题意:合并已排序数组,把数组num2合并到num1中,假设num1有足够空间容纳num2

python是不用考虑空间够不够的,直接合并排序即可


1. >>> nums1 = [1,2,3,0,0,0]; m = 3;\
2.  nums2 = [2,5,6]; n = 3
3. >>> nums1 = sorted(nums1[:m]+nums2)
4. >>> nums1
5. [1, 2, 2, 3, 5, 6]
6. >>>



方法二:遍历数组,如果num2中的num1小则插入大则追加到num1

>>> def merge(n1,n2):
  for i in n2:
    for j,n in enumerate(n1):
      if i<=n:
        n1.insert(j,i)
        break
    else:
      n1.append(i)
  return n1
>>> nums1 = [1,2,3,0,0,0]; m = 3;\
  nums2 = [2,5,6]; n = 3
>>> 
>>> nums1 = nums1[:m]
>>> merge(nums1,nums2)
[1, 2, 2, 3, 5, 6]
目录
相关文章
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
54 6
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
107 2
|
26天前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
34 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
30天前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
17 0
|
30天前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
17 0
|
1月前
|
小程序 IDE 开发工具
Python编写单词复习小程序
Python编写单词复习小程序
|
3月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
3月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
54 7
|
3月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
50 3
|
3月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
22 3

热门文章

最新文章