题目:
表:
Logs
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | num | varchar | +-------------+---------+ 在 SQL 中,id 是该表的主键。 id 是一个自增列。找出所有至少连续出现三次的数字。
返回的结果表中的数据可以按 任意顺序 排列。
结果格式如下面的例子所示:
来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:
Logs 表: +----+-----+ | id | num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+
输出:Result 表: +-----------------+ | ConsecutiveNums | +-----------------+ | 1 | +-----------------+
解释:1 是唯一连续出现至少三次的数字。
解法:
首先提取出num列,接着转为列表,然后利用大小为3的滑动窗口遍历列表。
知识点:
1.set.add(elmnt):给集合添加元素,elmnt是要添加的元素。
代码:
import pandas as pd def consecutive_numbers(logs: pd.DataFrame) -> pd.DataFrame: s = set() nums = list(logs['num']) if len(nums) >= 3: for index in range(len(nums) - 2): if nums[index] == nums[index + 1] == nums[index + 2]: s.add(nums[index]) return pd.DataFrame({'ConsecutiveNums': list(s)})