624. Maximum Distance in Arrays

LeetCode medium original: C# #array #csharp #leetcode #math #medium #sort
题目文本会按所选界面语言从俄语翻译;代码保持不变。

Вам given m 数组ов, где каждый 数组 отсортирован по возрастанию. Вы можете взять два целых числа из двух разных 数组ов (каждый 数组 выбирает одно) и вычислить расстояние. Мы определяем расстояние между двумя целыми числами a и b как их абсолютную разность |a - b|. return максимальное расстояние.

示例:

Input: arrays = [[1,2,3],[4,5],[1,2,3]]

Output: 4

C# 解法

匹配/原始
public class Solution {
    public int MaxDistance(IList<IList<int>> arrays) {
        int minVal = arrays[0][0];
        int maxVal = arrays[0][arrays[0].Count - 1];
        int maxDistance = 0;
        
        for (int i = 1; i < arrays.Count; i++) {
            maxDistance = Math.Max(maxDistance, Math.Abs(arrays[i][arrays[i].Count - 1] - minVal), Math.Abs(arrays[i][0] - maxVal));
            minVal = Math.Min(minVal, arrays[i][0]);
            maxVal = Math.Max(maxVal, arrays[i][arrays[i].Count - 1]);
        }
        
        return maxDistance;
    }
}

C++ 解法

自动草稿,提交前请检查
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public int MaxDistance(IList<vector<int>> arrays) {
        int minVal = arrays[0][0];
        int maxVal = arrays[0][arrays[0].size() - 1];
        int maxDistance = 0;
        
        for (int i = 1; i < arrays.size(); i++) {
            maxDistance = max(maxDistance, abs(arrays[i][arrays[i].size() - 1] - minVal), abs(arrays[i][0] - maxVal));
            minVal = min(minVal, arrays[i][0]);
            maxVal = max(maxVal, arrays[i][arrays[i].size() - 1]);
        }
        
        return maxDistance;
    }
}

Java 解法

匹配/原始
import java.util.List;

public class Solution {
    public int maxDistance(List<List<Integer>> arrays) {
        int minVal = arrays.get(0).get(0);
        int maxVal = arrays.get(0).get(arrays.get(0).size() - 1);
        int maxDistance = 0;
        
        for (int i = 1; i < arrays.size(); i++) {
            maxDistance = Math.max(maxDistance, Math.abs(arrays.get(i).get(arrays.get(i).size() - 1) - minVal), Math.abs(arrays.get(i).get(0) - maxVal));
            minVal = Math.min(minVal, arrays.get(i).get(0));
            maxVal = Math.max(maxVal, arrays.get(i).get(arrays.get(i).size() - 1));
        }
        
        return maxDistance;
    }
}

JavaScript 解法

匹配/原始
function maxDistance(arrays) {
    let minVal = arrays[0][0];
    let maxVal = arrays[0][arrays[0].length - 1];
    let maxDistance = 0;

    for (let i = 1; i < arrays.length; i++) {
        const currentMin = arrays[i][0];
        const currentMax = arrays[i][arrays[i].length - 1];

        maxDistance = Math.max(
            maxDistance,
            Math.abs(currentMax - minVal),
            Math.abs(currentMin - maxVal)
        );

        minVal = Math.min(minVal, currentMin);
        maxVal = Math.max(maxVal, currentMax);
    }

    return maxDistance;
}

Python 解法

匹配/原始
def maxDistance(arrays):
    min_val = arrays[0][0]
    max_val = arrays[0][-1]
    max_distance = 0
    
    for i in range(1, len(arrays)):
        max_distance = max(max_distance, abs(arrays[i][-1] - min_val), abs(arrays[i][0] - max_val))
        min_val = min(min_val, arrays[i][0])
        max_val = max(max_val, arrays[i][-1])
    
    return max_distance

Go 解法

匹配/原始
package main

import (
    "math"
)

func maxDistance(arrays [][]int) int {
    minVal := arrays[0][0]
    maxVal := arrays[0][len(arrays[0])-1]
    maxDistance := 0
    
    for i := 1; i < len(arrays); i++ {
        maxDistance = int(math.Max(float64(maxDistance), math.Max(float64(abs(arrays[i][len(arrays[i])-1]-minVal)), float64(abs(arrays[i][0]-maxVal)))))
        minVal = int(math.Min(float64(minVal), float64(arrays[i][0])))
        maxVal = int(math.Max(float64(maxVal), float64(arrays[i][len(arrays[i])-1])))
    }
    
    return maxDistance
}

func abs(a int) int {
    if a < 0 {
        return -a
    }
    return a
}

Algorithm

find minimum element из всех первых elementов 数组ов и maximum element из всех последних elementов 数组ов.

Рассчитайте максимальное расстояние между минимальным и максимальным elementами.

return это максимальное расстояние.

😎

Vacancies for this task

活跃职位 with overlapping task tags are 已显示.

所有职位
目前还没有活跃职位。