반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 413 | Arithmetic Slices | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/arithmetic-slices/
문제
An integer array is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.
- For example, [1,3,5,7,9], [7,7,7,7], and [3,-1,-5,-9] are arithmetic sequences.
Given an integer array nums, return the number of arithmetic subarrays of nums.
A subarray is a contiguous subsequence of the array.
조건
- 1 <= nums.length <= 5000
- -1000 <= nums[i] <= 1000
내 풀이
주어진 순열(ex. [1,2,3,4,2,7])를 차례로 보며 등차순열이 깨지는 순간, 그때의 subarray(ex. [1,2,3,4])의 길이가 3 이상인 모든 subarray(ex. [1,2,3], [2,3,4], [1,2,3,4])는 Arithmetic하다.
길이가 3이상인 모든 subarray의 갯수를 찾는 것은 1부터 len(subarray)-2까지의 합이다.
코드
class Solution:
def numberOfArithmeticSlices(self, nums: List[int]) -> int:
N = len(nums)
if N < 3: return 0
past = nums[1] - nums[0]
ans, count = 0, 2
for n in range(1, N-1):
if nums[n+1] - nums[n] == past:
count += 1
else:
past = nums[n+1] - nums[n]
if count > 2:
ans += sum([x for x in range(count-1)])
count = 2
if count > 2:
ans += sum([x for x in range(count-1)])
return ans
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 21 | Merge Two Sorted Lists | Python (0) | 2022.03.07 |
---|---|
[LeetCode] 799 | Champagne Tower | Python (0) | 2022.03.04 |
[LeetCode] 392 | Is Subsequence | Python (0) | 2022.03.02 |
[LeetCode] 165 | Compare Version Numbers | Python (0) | 2022.02.25 |
[LeetCode] 148 | Sort List | Python (0) | 2022.02.24 |
Comments