LeetCode 3423. 循环数组中相邻元素的最大差值 题解

示例如下:

复制代码
输入:nums = [1,2,4]

输出:3

解释:

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

其实就是把该数组相像成一个闭环的圈形数组,首尾相连,那么我们只需要分类讨论即可,第一点是当遍历头节点i=0时,其左节点是i=n-1,其右节点是i=1,第二点是当遍历尾节点i=n-1时,其左节点是i=n-2,右节点是i=0,第三点是正常遍历i,其左节点是i-1,右节点是i+1,所以代码如下

复制代码
class Solution {
    public int maxAdjacentDistance(int[] nums) {
        int n = nums.length;
        int l=0;
        int r=0;
        int max = 0;
        int ans = 0;
        for(int i=0;i<n;i++){
            if(i==0){
                l=n-1;
                r=1;
            }
            else if(i==n-1){
                l=n-2;
                r=0;
            }
            else{
                l=i-1;
                r=i+1;
            }
            max = Math.max(Math.abs(nums[l]-nums[i]),Math.abs(nums[r]-nums[i]));
            ans = Math.max(max,ans);
        }
        return ans;
    }
}
相关推荐
Dovis(誓平步青云)1 小时前
C++ Vector算法精讲与底层探秘:从经典例题到性能优化全解析
开发语言·c++·经验分享·笔记·算法
编程绿豆侠6 小时前
力扣HOT100之多维动态规划:62. 不同路径
算法·leetcode·动态规划
鑫鑫向栄6 小时前
[蓝桥杯]剪格子
数据结构·c++·算法·职场和发展·蓝桥杯
羊儿~7 小时前
P12592题解
数据结构·c++·算法
Wendy_robot7 小时前
池中锦鲤的自我修养,聊聊蓄水池算法
程序人生·算法·面试
.Vcoistnt7 小时前
Codeforces Round 1028 (Div. 2)(A-D)
数据结构·c++·算法·贪心算法·动态规划
白熊1887 小时前
【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)
算法·机器学习·聚类
晨曦学习日记8 小时前
力扣题解654:最大二叉树
数据结构·算法·leetcode
PXM的算法星球8 小时前
paoxiaomo的XCPC算法竞赛训练经验
c++·算法
孤独得猿8 小时前
高阶数据结构——并查集
数据结构·c++·经验分享·算法