3423.循环数组中相邻元素的最大差值:遍历(模拟)

【LetMeFly】3423.循环数组中相邻元素的最大差值:遍历(模拟)

力扣题目链接:https://leetcode.cn/problems/maximum-difference-between-adjacent-elements-in-a-circular-array/

给你一个 循环 数组 nums ,请你找出相邻元素之间的 最大 绝对差值。

注意:一个循环数组中,第一个元素和最后一个元素是相邻的。

 

示例 1:

输入:nums = [1,2,4]

输出:3

解释:

由于 nums 是循环的,nums[0] 和 nums[2] 是相邻的,它们之间的绝对差值是最大值 |4 - 1| = 3 。

示例 2:

输入:nums = [-5,-10,-5]

输出:5

解释:

相邻元素 nums[0] 和 nums[1] 之间的绝对差值为最大值 |-5 - (-10)| = 5 。

 

提示:

  • 2 <= nums.length <= 100
  • -100 <= nums[i] <= 100

解题方法:遍历

答案(ans)的默认值是$abs(nums[0] - nums[-1])$,接着使用$i$从$1$到$len(nums) - 1$遍历,更新ans为$max(ans, abs(nums[i] - nums[i - 1]))$

  • 时间复杂度$O(len(nums))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
* @Author: LetMeFly
* @Date: 2025-06-12 22:49:40
* @LastEditors: LetMeFly.xyz
* @LastEditTime: 2025-06-12 22:52:31
*/
class Solution {
public:
int maxAdjacentDistance(vector<int>& nums) {
int ans = abs(nums[0] - nums[nums.size() - 1]);
for (int i = 1; i < nums.size(); i++) {
ans = max(ans, abs(nums[i] - nums[i - 1]));
}
return ans;
}
};

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
'''
Author: LetMeFly
Date: 2025-06-12 22:49:40
LastEditors: LetMeFly.xyz
LastEditTime: 2025-06-12 22:53:39
'''
from typing import List

class Solution:
def maxAdjacentDistance(self, nums: List[int]) -> int:
ans = abs(nums[0] - nums[-1])
for i in range(1, len(nums)):
ans = max(ans, abs(nums[i] - nums[i - 1]))
return ans

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
* @Author: LetMeFly
* @Date: 2025-06-12 22:49:40
* @LastEditors: LetMeFly.xyz
* @LastEditTime: 2025-06-12 23:01:46
*/
class Solution {
public int maxAdjacentDistance(int[] nums) {
int ans = Math.abs(nums[0] - nums[nums.length - 1]);
for (int i = 1; i < nums.length; i++) {
ans = Math.max(ans, Math.abs(nums[i] - nums[i - 1]));
}
return ans;
}
}

Go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
* @Author: LetMeFly
* @Date: 2025-06-12 22:49:40
* @LastEditors: LetMeFly.xyz
* @LastEditTime: 2025-06-12 22:58:57
* @Descriptions: AC,100.00%,93.33%
*/
package main

// abs3423 是因为golang没有内置abs函数
func abs3423(x int) int {
if x < 0 {
return -x
}
return x
}

func maxAdjacentDistance(nums []int) int {
ans := abs3423(nums[0] - nums[len(nums)-1])
for i := 1; i < len(nums); i++ {
ans = max(ans, abs3423(nums[i] - nums[i - 1]))
}
return ans
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源


3423.循环数组中相邻元素的最大差值:遍历(模拟)
https://blog.letmefly.xyz/2025/06/12/LeetCode 3423.循环数组中相邻元素的最大差值/
作者
发布于
2025年6月12日
许可协议