LeetCode 3423: Maximum Difference Between Adjacent Elements in a Circular Array
LeetCode 3423Source: https://leetcode.com/problems/maximum-difference-between-adjacent-elements-in-a-circular-array/
English
Traverse the array once and compute abs(nums[i] - nums[(i + 1) % n]) for every index. Because the array is circular, the modulo naturally includes the final pair between last and first elements. Track the maximum value during traversal.
class Solution {
public int maxAdjacentDistance(int[] nums) {
int n = nums.length;
int ans = 0;
for (int i = 0; i < n; i++) {
ans = Math.max(ans, Math.abs(nums[i] - nums[(i + 1) % n]));
}
return ans;
}
}func maxAdjacentDistance(nums []int) int {
n := len(nums)
ans := 0
for i := 0; i < n; i++ {
diff := nums[i] - nums[(i+1)%n]
if diff < 0 {
diff = -diff
}
if diff > ans {
ans = diff
}
}
return ans
}class Solution {
public:
int maxAdjacentDistance(vector& nums) {
int n = nums.size();
int ans = 0;
for (int i = 0; i < n; ++i) {
ans = max(ans, abs(nums[i] - nums[(i + 1) % n]));
}
return ans;
}
}; class Solution:
def maxAdjacentDistance(self, nums: List[int]) -> int:
n = len(nums)
ans = 0
for i in range(n):
ans = max(ans, abs(nums[i] - nums[(i + 1) % n]))
return ansvar maxAdjacentDistance = function(nums) {
const n = nums.length;
let ans = 0;
for (let i = 0; i < n; i++) {
ans = Math.max(ans, Math.abs(nums[i] - nums[(i + 1) % n]));
}
return ans;
};中文
遍历数组一圈,计算每个相邻元素差值绝对值 abs(nums[i] - nums[(i + 1) % n])。因为是环形数组,取模会自动把最后一个元素与第一个元素配对。遍历过程中维护最大值即可。
class Solution {
public int maxAdjacentDistance(int[] nums) {
int n = nums.length;
int ans = 0;
for (int i = 0; i < n; i++) {
ans = Math.max(ans, Math.abs(nums[i] - nums[(i + 1) % n]));
}
return ans;
}
}func maxAdjacentDistance(nums []int) int {
n := len(nums)
ans := 0
for i := 0; i < n; i++ {
diff := nums[i] - nums[(i+1)%n]
if diff < 0 {
diff = -diff
}
if diff > ans {
ans = diff
}
}
return ans
}class Solution {
public:
int maxAdjacentDistance(vector& nums) {
int n = nums.size();
int ans = 0;
for (int i = 0; i < n; ++i) {
ans = max(ans, abs(nums[i] - nums[(i + 1) % n]));
}
return ans;
}
}; class Solution:
def maxAdjacentDistance(self, nums: List[int]) -> int:
n = len(nums)
ans = 0
for i in range(n):
ans = max(ans, abs(nums[i] - nums[(i + 1) % n]))
return ansvar maxAdjacentDistance = function(nums) {
const n = nums.length;
let ans = 0;
for (let i = 0; i < n; i++) {
ans = Math.max(ans, Math.abs(nums[i] - nums[(i + 1) % n]));
}
return ans;
};
Comments