文章目录
- 1. 题目
- 2. 解题
1. 题目
实验室里正在进行一项实验。为了确保数据的准确性,同时使用 两个 传感器来采集数据。
您将获得2个数组 sensor1 and sensor2,其中 sensor1[i] 和 sensor2[i] 分别是两个传感器对第 i 个数据点采集到的数据。
但是,这种类型的传感器有可能存在缺陷,它会导致 某一个 数据点采集的数据(掉落值)被丢弃。
数据被丢弃后,所有在其右侧的数据点采集的数据,都会被向左移动一个位置,最后一个数据点采集的数据会被一些随机值替换。可以保证此随机值不等于掉落值。
举个例子, 如果正确的数据是 [1,2,3,4,5] , 此时 3 被丢弃了, 传感器会返回 [1,2,4,5,7] (最后的位置可以是任何值, 不仅仅是 7).
可以确定的是,最多有一个 传感器有缺陷。
请返回这个有缺陷的传感器的编号 (1 或 2)。
如果任一传感器 没有缺陷 ,或者 无法 确定有缺陷的传感器,则返回 -1 。
示例 1:
输入:sensor1 = [2,3,4,5], sensor2 = [2,1,3,4]
输出:1
解释:传感器 2 返回了所有正确的数据.
传感器2对第二个数据点采集的数据,被传感器1丢弃了,传感器1返回的最后一个数据被替换为 5 。示例 2:
输入:sensor1 = [2,2,2,2,2], sensor2 = [2,2,2,2,5]
输出:-1
解释:无法判定拿个传感器是有缺陷的。
假设任一传感器丢弃的数据是最后一位,那么,另一个传感器就能给出与之对应的输出。示例 3:
输入:sensor1 = [2,3,2,2,3,2], sensor2 = [2,3,2,3,2,7]
输出:2
解释:传感器 1 返回了所有正确的数据.
传感器 1 对第四个数据点的采集数据,被传感器2丢失了, 传感器 2 返回的最后一个数据被替换为 7 。提示:
sensor1.length == sensor2.length
1 <= sensor1.length <= 100
1 <= sensor1[i], sensor2[i] <= 100
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/faulty-sensor
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 分别假设其中一个的末尾数据是假的,丢弃
class Solution:def badSensor(self, sensor1: List[int], sensor2: List[int]) -> int:i, j = 0, 0n = len(sensor1)while i < n and j < n-1: # 丢弃2的末尾if sensor1[i] == sensor2[j]:i += 1j += 1else:i += 1 # 不相等,长的移动一步if i>j+1: # 间隔超过1了,肯定不能匹配breakbad2 = (i==n and j==n-1)i, j = 0, 0while i < n-1 and j < n: # 丢弃1的末尾if sensor1[i] == sensor2[j]:i += 1j += 1else:j += 1if j>i+1:breakbad1 = (i==n-1 and j==n)if (bad1 and bad2) or (not bad1 and not bad2):return -1return 1 if bad1 else 2
24 ms 15.1 MB Python3
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!