LeetCode 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)的默认值是 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 Listclass 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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源