1.如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j
,A[i] <= A[j]
,那么数组 A
是单调递增的。 如果对于所有 i <= j
,A[i]> = A[j]
,那么数组 A
是单调递减的。
当给定的数组 A
是单调数组时返回 true
,否则返回 false
。
示例 1:
输入:[1,2,2,3]
输出:true
示例 2:
输入:[6,5,4,4]
输出:true
输入:[1,3,2]
输出:false
输入:[1,2,4,5]
输出:true
输入:[1,1,1]
输出:true
1 <= A.length <= 50000
-100000 <= A[i] <= 100000
#解题思路:
排序LIST有内置函数sort,不过SORT他默认是递增,这里我们可以对要验证的列表进行切片旋转
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
import copy
A_2 = copy.deepcopy(A)
A_2.sort()
if A_2 == A or A_2 == A[::-1]:
return True
else:
return False
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:
进阶:
根据题意走没什么特别的思路
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
new_list = []
if len(nums1) <len(nums2):
for a in nums1:
if a in nums2:
new_list.append(a)
nums2.remove(a)
else:
for a in nums2:
if a in nums1:
new_list.append(a)
nums1.remove(a)
return new_list
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:
如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤记录判断他是否会被奖赏。
示例 1:
输入: "PPALLP"
输出: True
示例 2:
输入: "PPALLL"
输出: False
#A大于1肯定没有奖励
#A小于1有L超过连续两次为没有奖励
#其他情况均为有奖励
class Solution:
def checkRecord(self, s: str) -> bool:
s_dict = dict()
if s.count('A') > 1:
return False
else:
for a in range(2,len(s)) :
if s[a]==s[a-1]==s[a-2]:
if s[a] not in s_dict:
s_dict[s[a]] = 1
if s_dict.get('L')== 1:
break
if s_dict.get('L',0) == 1:
return False
else:
return True
有更加好的思路,或者解题方法评论区留言谢谢