산술 하위 배열
s
는 모든 유효한 s[i+1] - s[i] == s[1] - s[0]
에 대해 i
인 경우에만 산술 연산입니다.예를 들어 다음은 산술 시퀀스입니다.
1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9
다음 순서는 산술이 아닙니다.
1, 1, 2, 5, 7
n
정수 배열, nums
및 m
정수 배열 두 개(각각 l
및 r
)가 제공되어 m
범위 쿼리를 나타냅니다. 여기서 ith
쿼리는 범위입니다. [l[i], r[i]]
. 모든 배열은 인덱스가 0입니다.boolean
개 요소의 목록을 반환합니다.예 1:
입력: 숫자 =
answer
, l = answer[i]
, r = true
출력: nums[l[i]], nums[l[i]+1], ... , nums[r[i]]
설명:0번째 쿼리에서 하위 배열은 [4,6,5]입니다. 이것은 산술 수열인 [6,5,4]로 재배열될 수 있습니다.
첫 번째 쿼리에서 하위 배열은 [4,6,5,9]입니다. 이것은 산술 수열로 재정렬할 수 없습니다.
두 번째 쿼리에서 하위 배열
false
은 산술 시퀀스인 [4,6,5,9,3,7]
로 재정렬할 수 있습니다.예 2:
입력: 숫자 = [-12,-9,-3,-12,-6,15,20,-25,-20,-15,-10], l = [0,1,6,4,8, 7], r = [4,4,9,7,9,10]
출력: [거짓,참,거짓,거짓,참,참]
제약:
[0,0,2]
[2,3,5]
[true,false,true]
[5,9,3,7]. This
[3,5,7,9]
n == nums.length
m == l.length
해결책:
from collections import Counter
class Solution:
def isAP(self, arr):
n = len(arr)
if n == 1:
return True
arr = Counter(arr)
a = min(arr)
b = max(arr)
d = (b - a) // (n - 1)
if d == 0 and len(arr) == 1:
return True
for i in range(n):
if arr[a + i * d] != 1:
return False
return True
def checkArithmeticSubarrays(self, nums: List[int], l: List[int], r: List[int]) -> List[bool]:
n = len(l)
return [self.isAP(nums[l[i]:r[i]+1]) for i in range(n)]
Reference
이 문제에 관하여(산술 하위 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/arithmetic-subarrays-28gm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)