【LetMeFly】3423.循环数组中相邻元素的最大差值:遍历(模拟)
给你一个 循环 数组 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)的默认值是 a b s ( n u m s [ 0 ] − n u m s [ − 1 ] ) abs(nums[0] - nums[-1]) abs(nums[0]−nums[−1]),接着使用 i i i从 1 1 1到 l e n ( n u m s ) − 1 len(nums) - 1 len(nums)−1遍历,更新ans为 m a x ( a n s , a b s ( n u m s [ i ] − n u m s [ i − 1 ] ) ) max(ans, abs(nums[i] - nums[i - 1])) max(ans,abs(nums[i]−nums[i−1]))
- 时间复杂度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))
- 空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C++
/*
* @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
'''
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
/*
* @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
/*
* @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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源