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[i1]))

  • 时间复杂度 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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tisfy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值