文章目录

  • 581. 最短无序连续子数组
  • 605.种花问题
  • 628. 三个数的最大乘积

581. 最短无序连续子数组

给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

你找到的子数组应是最短的,请输出它的长度。

1.排序

class Solution:def findUnsortedSubarray(self, nums: List[int]) -> int:num1 = sorted(nums)left =float("inf")right = 0for i in range(len(num1)):if num1[i] != nums[i]:left = min(left, i)right = max(right, i)if right - left + 1 > 0:return right - left + 1else:return 0

将排序后的数组和原数组对比,第一个不同的值与最后一个不同值的差即所得解。296ms,15.1MB

2.两次遍历

class Solution:def findUnsortedSubarray(self, nums: List[int]) -> int:n=len(nums)max_num=nums[0]right=0for i in range(n):if(nums[i]>=max_num):max_num=nums[i]else:right=ileft=nmin_num=nums[-1]for i in range(n-1,-1,-1):if(nums[i]<=min_num):min_num=nums[i]else:left=ireturn right-left+1 if(right-left+1 >0) else 0

244ms,14.9MB

605.种花问题

假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。

1.贪心查找

class Solution:def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:if n == 0:return Trueflowerbed.insert(0, 0)flowerbed.append(0)for i in range(1, len(flowerbed)-1):if flowerbed[i-1] != 1 and flowerbed[i+1] != 1 and flowerbed[i] == 0:n -= 1flowerbed[i] = 1if n == 0:return Truereturn False

前后各插入一个0可以让计算更容易,然后遍历即可。200ms,14.1MB

2.判断是否三个0连续

class Solution:def canPlaceFlowers(self, f: List[int], n: int) -> bool:sums = 0i = 0f.insert(0,0)f.insert(len(f),0)while i in range(len(f) - 2):if f[i] == 0 and f[i + 1] == 0 and f[i + 2] == 0:sums += 1i += 1i += 1if n <= sums:return Trueelse:return False

依旧收尾加0,有三个0连续代表可以种花。296ms,13.9MB

628. 三个数的最大乘积

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

1.排序

class Solution:def maximumProduct(self, nums: List[int]) -> int:nums.sort()return max(nums[0]*nums[1]*nums[-1], nums[-1]*nums[-2]*nums[-3])

一共两种情况,最大的三个正数的乘积、最大的正数和最小的两个负数的乘积,排序后比较即可。
364ms,14.6MB

一次遍历得到上述五个值速度快点,但是代码较长不写了。

从零开始刷Leetcode——数组(581.605.628)相关推荐

  1. 从零开始刷Leetcode——数组(1.26)

    文章目录 1.两数之和 26.删除排序数组中的重复项 马上要去读研了,作为一个转码的ee学生,刷题还是很必要的.从零开始,希望能坚持下去!打算按照类别和难度慢慢刷,一天两三道题左右,争取明年夏季找实习 ...

  2. 从零开始刷Leetcode——数组(11.15.16.18)

    文章目录 11. 盛最多水的容器 15. 三数之和 16. 最接近的三数之和 18. 四数之和 前800题easy难度想做的已经做完了,之后是medium难度 11. 盛最多水的容器 给你 n 个非负 ...

  3. 从零开始刷Leetcode——数组(122.167.169)

    文章目录 122.买卖股票的最佳时机 II 167.两数之和II 169.多数元素 122.买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计 ...

  4. 从零开始刷Leetcode——数组(941.977)

    文章目录 941. 有效的山脉数组 977. 有序数组的平方 三级目录 941. 有效的山脉数组 给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false. 让我们回顾一下, ...

  5. 从零开始刷Leetcode——数组(896.905.914.922)

    文章目录 896. 单调数列 905. 按奇偶排序数组 914. 卡牌分组 922. 按奇偶排序数组 II 896. 单调数列 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i &l ...

  6. 从零开始刷Leetcode——数组(830.849.888)

    文章目录 830. 较大分组的位置 849. 到最近的人的最大距离 888. 公平的糖果交换 830. 较大分组的位置 在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组. 例 ...

  7. 从零开始刷Leetcode——数组(746.747)

    文章目录 747. 至少是其他数字两倍的最大数 746. 使用最小花费爬楼梯 747. 至少是其他数字两倍的最大数 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是 ...

  8. 从零开始刷Leetcode——数组(31.33)

    文章目录 31. 下一个排列 33. 搜索旋转排序数组 31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重 ...

  9. 从零开始刷Leetcode——数组(697.717.724)

    文章目录 697. 数组的度 717. 1比特与2比特字符 724. 寻找数组的中心索引 697. 数组的度 给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数 ...

最新文章

  1. 如何动态修改windows下的host文件
  2. reactjs组件的生命周期函数:getDerivedStateFromProps
  3. python赋值语句的一般格式为_[零基础学Python]赋值,简单也不简单
  4. Hadoop0.20.2版本在Ubuntu下安装和配置
  5. es6分享——变量的解构赋值
  6. 树形结构 —— 树与二叉树 —— 树的中心
  7. python寻路_【Python】 Numpy极简寻路
  8. oracle 11g 静默安装
  9. 零基础学python书籍-0基础学python,有什么教程或者书可以推荐吗?
  10. 百叶窗叶片锋利,不安全
  11. MacBook Pro(13 英寸,2011 年末)A1278 官方最高支持macOS High Sierra,使用macOS Catalina Patcher成功安装macOS Catalina
  12. 数学建模入门篇(0基础必看,全是自己的经验)
  13. [C#] [GIS] 关于椭球七参数和高斯投影正反算的一些总结
  14. SBC芯片35584数据手册预调节器翻译
  15. C语言学习-- 计算机原理及二进制
  16. VSCode自定义网络背景皮肤
  17. win10 启用.net 3.5 iis错误0x800f081f
  18. 《按自己的意愿过一生》语录二
  19. IdentityServer4 获取Token及刷新Token
  20. 谷歌2022年共发放1200万美元赏金,单个最高60.5万美元

热门文章

  1. 如何提高缓存命中率(Redis)
  2. Java Web Start简介
  3. code第一部分数组:第十七题 爬楼梯问题
  4. js中的逻辑与()和逻辑或(||)(转载)
  5. apache ab测试与centos系统优化
  6. ZeroMQ(java)之负载均衡
  7. Unix网络编程 chart
  8. 新时代ITer们的思考及购书有奖活动
  9. chapter1.4.4
  10. 前台和后台是要写两个工程吗_如何判断一个Bug属于前台还是后台