배열의 언덕과 계곡 계산
nums
이 제공됩니다. i
의 가장 가깝지 않은 이웃이 nums
보다 작은 경우 인덱스 i
는 nums[i]
의 언덕의 일부입니다. 유사하게, 인덱스 i
는 nums
의 가장 가깝지 않은 이웃이 i
보다 큰 경우 nums[i]
의 계곡의 일부입니다. 인접한 인덱스 i
및 j
는 nums[i] == nums[j]
인 경우 동일한 언덕 또는 계곡의 일부입니다.인덱스가 언덕이나 계곡의 일부가 되려면 인덱스의 왼쪽과 오른쪽 모두에 동등하지 않은 이웃이 있어야 합니다.
nums
의 언덕과 계곡의 수를 반환합니다.예 1:
입력: 숫자 = [2,4,1,1,6,5]
출력: 3
설명:
인덱스 0에서: 왼쪽에 2의 동등하지 않은 이웃이 없으므로 인덱스 0은 언덕도 계곡도 아닙니다.
인덱스 1에서: 4의 가장 가깝지 않은 이웃은 2와 1입니다. 4 > 2 및 4 > 1이므로 인덱스 1은 언덕입니다.
인덱스 2에서: 1의 가장 가깝지 않은 이웃은 4와 6입니다. 1 < 4 및 1 < 6이므로 인덱스 2는 계곡입니다.
인덱스 3에서: 1의 가장 가깝지 않은 이웃은 4와 6입니다. 1 < 4 및 1 < 6이므로 인덱스 3은 계곡이지만 인덱스 2와 동일한 계곡의 일부입니다.
인덱스 4에서: 6의 가장 가깝지 않은 이웃은 1과 5입니다. 6 > 1 및 6 > 5이므로 인덱스 4는 언덕입니다.
인덱스 5에서: 오른쪽에 5의 동등하지 않은 이웃이 없으므로 인덱스 5는 언덕도 계곡도 아닙니다.
3개의 언덕과 계곡이 있으므로 3을 반환합니다.
예 2:
입력: 숫자 = [6,6,5,5,4,1]
출력: 0
설명:
인덱스 0에서: 왼쪽에 6의 동등하지 않은 이웃이 없으므로 인덱스 0은 언덕도 계곡도 아닙니다.
인덱스 1에서: 왼쪽에 6의 동등하지 않은 이웃이 없으므로 인덱스 1은 언덕도 계곡도 아닙니다.
인덱스 2에서: 5의 가장 가깝지 않은 이웃은 6과 4입니다. 5 < 6 및 5 > 4이므로 인덱스 2는 언덕도 계곡도 아닙니다.
인덱스 3에서: 5의 가장 가깝지 않은 이웃은 6과 4입니다. 5 < 6 및 5 > 4이므로 인덱스 3은 언덕도 계곡도 아닙니다.
인덱스 4에서: 4의 가장 가깝지 않은 이웃은 5와 1입니다. 4 < 5 및 4 > 1이므로 인덱스 4는 언덕도 계곡도 아닙니다.
인덱스 5에서: 오른쪽에 1과 같지 않은 이웃이 없으므로 인덱스 5는 언덕도 계곡도 아닙니다.
언덕과 계곡이 0개이므로 0을 반환합니다.
제약:
3 <= nums.length <= 100
1 <= nums[i] <= 100
해결책:
class Solution:
def countHillValley(self, nums: List[int]) -> int:
n = len(nums)
groups = []
i = 0
while i < n:
ctr = 1
while i < n - 1 and nums[i] == nums[i + 1]:
i += 1
ctr += 1
i += 1
groups.append((nums[i - 1], ctr))
ctr = 0
m = len(groups)
for i in range(1, m - 1):
left = groups[i][0] > groups[i - 1][0]
right = groups[i][0] > groups[i + 1][0]
if not left ^ right:
ctr += 1
return ctr
Reference
이 문제에 관하여(배열의 언덕과 계곡 계산), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/count-hills-and-valleys-in-an-array-50h9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)