从零开始刷Leetcode——数组(941.977)
文章目录
- 941. 有效的山脉数组
- 977. 有序数组的平方
- 三级目录
941. 有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:
- A.length >= 3
- 在 0 < i < A.length - 1 条件下,存在 i 使得:
- A[0] < A[1] < … A[i-1] < A[i]
- A[i] > A[i+1] > … > A[A.length - 1]
1.
class Solution:def validMountainArray(self, A: List[int]) -> bool:if len(A) < 3:return Falsemax_value = max(A)index = A.index(max_value)if index == 0 or index == len(A)-1:return Falsereturn ( all(A[i] < A[i+1] for i in range(index)) and all(A[j] > A[j+1] for j in range(index, len(A)-1)) )
找最大值,然后判断两边是否分别是递增或递减,注意如果最大值在首尾不满足条件。 300ms, 15MB
2.官方解法
class Solution(object):def validMountainArray(self, A):N = len(A)i = 0# walk upwhile i+1 < N and A[i] < A[i+1]:i += 1# peak can't be first or lastif i == 0 or i == N-1:return False# walk downwhile i+1 < N and A[i] > A[i+1]:i += 1return i == N-1
先判断上行直到最大值,再判断下行,只循环一遍快一点。 248ms, 14.9MB
977. 有序数组的平方
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
1.直接计算并排序
class Solution(object):def sortedSquares(self, A):return sorted(x*x for x in A)
不太明白排序速度为什么会比双指针快呢?272ms, 15.5MB
2.双指针
class Solution:def sortedSquares(self, A: List[int]) -> List[int]:ans = [0]*len(A)left = 0right = len(A)-1for i in range(len(A)-1, -1, -1):if pow(A[left],2) > pow(A[right],2):ans[i] = pow(A[left],2)left += 1else:ans[i] = pow(A[right],2)right -= 1return ans
分别判断首尾再从后往前填入即可。 384ms, 15.6MB
三级目录
从零开始刷Leetcode——数组(941.977)相关推荐
- 从零开始刷Leetcode——数组(1.26)
文章目录 1.两数之和 26.删除排序数组中的重复项 马上要去读研了,作为一个转码的ee学生,刷题还是很必要的.从零开始,希望能坚持下去!打算按照类别和难度慢慢刷,一天两三道题左右,争取明年夏季找实习 ...
- 从零开始刷Leetcode——数组(11.15.16.18)
文章目录 11. 盛最多水的容器 15. 三数之和 16. 最接近的三数之和 18. 四数之和 前800题easy难度想做的已经做完了,之后是medium难度 11. 盛最多水的容器 给你 n 个非负 ...
- 从零开始刷Leetcode——数组(122.167.169)
文章目录 122.买卖股票的最佳时机 II 167.两数之和II 169.多数元素 122.买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计 ...
- 从零开始刷Leetcode——数组(896.905.914.922)
文章目录 896. 单调数列 905. 按奇偶排序数组 914. 卡牌分组 922. 按奇偶排序数组 II 896. 单调数列 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i &l ...
- 从零开始刷Leetcode——数组(830.849.888)
文章目录 830. 较大分组的位置 849. 到最近的人的最大距离 888. 公平的糖果交换 830. 较大分组的位置 在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组. 例 ...
- 从零开始刷Leetcode——数组(746.747)
文章目录 747. 至少是其他数字两倍的最大数 746. 使用最小花费爬楼梯 747. 至少是其他数字两倍的最大数 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是 ...
- 从零开始刷Leetcode——数组(31.33)
文章目录 31. 下一个排列 33. 搜索旋转排序数组 31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重 ...
- 从零开始刷Leetcode——数组(697.717.724)
文章目录 697. 数组的度 717. 1比特与2比特字符 724. 寻找数组的中心索引 697. 数组的度 给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数 ...
- 从零开始刷Leetcode——数组(643.665.674)
文章目录 643. 子数组最大平均数 I 665. 非递减数列 674. 最长连续递增序列 643. 子数组最大平均数 I 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均 ...
最新文章
- 散列表查找(哈希表)
- eclipse Hibernate
- 《信息系统项目管理师软考辅导——3年真题详解与全真模拟》主要创新点、关注点...
- 字节跳动面试题:“请你描述下 Spring Bean 的生命周期?”
- 苹果笔记本能不能用python_“苹”除了苹果还能组哪些词?苹组词,释义及造句汇总!...
- Zabbix-1.8.14 安装
- OpenCv平滑与模糊
- es进行curl请求时报错:missing authentication token for REST request
- linux与信息安全,网络与信息安全系统安全Linux系统安全.ppt
- ttys和tty_Linux中tty、pty、/dev/ttySn等概念讲解
- 1483. 纪念品分组 输出好忧桑…………
- 使用JDK自带的工具keytool生成证书
- 给未来的你-李开复在2011级大学新生学习规划讲座上的演讲
- 7-2 实验二 银行利息结算
- 奇遇网以讨论电脑技术和互联网科技资源
- matlab矩阵错位相加,矩阵的旋转和相加——数组实现
- 平衡球游戏开发教程(四)--深入了解WP7游戏底层原理
- pandas—数据组合
- FPGA高速接口设计之SpaceWire——总线协议概述
- GIS开发:nginx发布常用数据