
示例如下:
输入: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;
}
}