前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >力扣题目汇总(单调数列,两个数组的交集Ⅱ,学生出勤记录Ⅰ)

力扣题目汇总(单调数列,两个数组的交集Ⅱ,学生出勤记录Ⅰ)

作者头像
小小咸鱼YwY
发布2019-07-24 16:06:04
4790
发布2019-07-24 16:06:04
举报
文章被收录于专栏:python-爬虫python-爬虫

力扣题目汇总(单调数列,两个数组的交集Ⅱ,学生出勤记录Ⅰ)

单调数列

1.题目描述

1.如果数组是单调递增或单调递减的,那么它是单调的。 如果对于所有 i <= jA[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= jA[i]> = A[j],那么数组 A 是单调递减的。 当给定的数组 A 是单调数组时返回 true,否则返回 false示例 1:

输入:[1,2,2,3]
输出:true

示例 2:

输入:[6,5,4,4]
输出:true

示例 3:

输入:[1,3,2]
输出:false

示例 4:

输入:[1,2,4,5]
输出:true

示例 5:

输入:[1,1,1]
输出:true

提示:
  1. 1 <= A.length <= 50000
  2. -100000 <= A[i] <= 100000

2.解题思路

#解题思路:
排序LIST有内置函数sort,不过SORT他默认是递增,这里我们可以对要验证的列表进行切片旋转

3.解题

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            

两个数组的交集 II

1.题目描述

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]

说明:

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
  • 我们可以不考虑输出结果的顺序。

进阶:

  • 如果给定的数组已经排好序呢?你将如何优化你的算法?
  • 如果 nums1 的大小比 nums2 小很多,哪种方法更优?
  • 如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

2.解题思路

根据题意走没什么特别的思路

3.解题

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

学生出勤记录 I

1题目描述

给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:

  1. 'A' : Absent,缺勤
  2. 'L' : Late,迟到
  3. 'P' : Present,到场

如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。

你需要根据这个学生的出勤记录判断他是否会被奖赏。

示例 1:

输入: "PPALLP"
输出: True

示例 2:

输入: "PPALLL"
输出: False

2.解题思路

#A大于1肯定没有奖励
#A小于1有L超过连续两次为没有奖励
#其他情况均为有奖励

3.解题

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

`有更加好的思路,或者解题方法评论区留言谢谢

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 力扣题目汇总(单调数列,两个数组的交集Ⅱ,学生出勤记录Ⅰ)
    • 单调数列
      • 1.题目描述
      • 示例 3:
      • 示例 4:
      • 示例 5:
      • 提示:
      • 2.解题思路
      • 3.解题
    • 两个数组的交集 II
      • 1.题目描述
      • 2.解题思路
      • 3.解题
    • 学生出勤记录 I
      • 1题目描述
      • 2.解题思路
      • 3.解题
  • `有更加好的思路,或者解题方法评论区留言谢谢
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档