LeetCode 第189场周赛

第一题:在既定时间做作业的学生人数

难度简单

题目描述

给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。

已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。

请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。

示例 1:

示例 2:

示例 3:

示例 4:

示例 5:

提示:

  • startTime.length == endTime.length
  • 1 <= startTime.length <= 100
  • 1 <= startTime[i] <= endTime[i] <= 1000
  • 1 <= queryTime <= 1000

题目链接

https://leetcode-cn.com/problems/number-of-students-doing-homework-at-a-given-time/

思路:

  数据量很小,暴力即可。

代码:

第二题:重新排列句子中的单词

难度中等

题目描述

「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text :

  • 句子的首字母大写
  • text 中的每个单词都用单个空格分隔。

请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。

请同样按上述格式返回新的句子。

示例 1:

示例 2:

示例 3:

提示:

  • text 以大写字母开头,然后包含若干小写字母以及单词间的单个空格。
  • 1 <= text.length <= 10^5

题目链接

https://leetcode-cn.com/problems/rearrange-words-in-a-sentence/

思路:

  这题对python很友好。

代码:

第三题:收藏清单

难度中等

题目描述

给你一个数组 favoriteCompanies ,其中 favoriteCompanies[i] 是第 i 名用户收藏的公司清单(下标从 0 开始)。

请找出不是其他任何人收藏的公司清单的子集的收藏清单,并返回该清单下标下标需要按升序排列

示例 1:

示例 2:

示例 3:

提示:

  • 1 <= favoriteCompanies.length <= 100
  • 1 <= favoriteCompanies[i].length <= 500
  • 1 <= favoriteCompanies[i][j].length <= 20
  • favoriteCompanies[i] 中的所有字符串 各不相同
  • 用户收藏的公司清单也 各不相同 ,也就是说,即便我们按字母顺序排序每个清单, favoriteCompanies[i] != favoriteCompanies[j]仍然成立。
  • 所有字符串仅包含小写英文字母。

题目链接

https://leetcode-cn.com/problems/people-whose-list-of-favorite-companies-is-not-a-subset-of-another-list/

思路:

  这题也对python很友好。

代码:

第四题:圆形靶内的最大飞镖数量

难度困难

题目描述

墙壁上挂着一个圆形的飞镖靶。现在请你蒙着眼睛向靶上投掷飞镖。

投掷到墙上的飞镖用二维平面上的点坐标数组表示。飞镖靶的半径为 r

请返回能够落在 任意 半径为 r 的圆形靶内或靶上的最大飞镖数。

示例 1:

示例 2:

示例 3:

示例 4:

提示:

  • 1 <= points.length <= 100
  • points[i].length == 2
  • -10^4 <= points[i][0], points[i][1] <= 10^4
  • 1 <= r <= 5000

题目链接

https://leetcode-cn.com/problems/maximum-number-of-darts-inside-of-a-circular-dartboard/

思路:

  枚举法,在所有的点中任选两个点,假设它们都在圆上,由圆上两点和圆的半径可以得到圆心。枚举所有的圆心,计算在圆内的点数。

  两点重合时取经过它们的任意圆都可以。

代码: