Can Make Arithmetic Progression From Sequence

Table de matières


Introduction

Dans cet article, je vais résoudre le problème de la vérification permettant de déterminer si un ensemble de nombres peut représenter une progression arithmétique. Autrement dit, nous cherchons à savoir si la différence entre chaque paire de nombres consécutifs est constante.

Ce problème possède comme facile comme difficulté selon les métrique de Leetcode.


Énoncé du problème

A sequence of numbers is called an arithmetic progression if the difference between any two consecutive elements is the same.

Given an array of numbers arr, return true if the array can be rearranged to form an arithmetic progression. Otherwise, return false.

Contraintes :


Solution

Dans cette méthode, nous utilisons une fonction de la bibliothèque standard permettant de trier une liste de manière optimale.

Ensuite, nous comparons les différences consécutives entre chaque paire d’éléments adjacents afin de vérifier si elles sont identiques.

class Solution {
    public:
        bool canMakeArithmeticProgression(vector<int>& arr) {
            sort(arr.begin(), arr.end());
            int inc = arr[1] - arr[0];
            for (int i = 1; i < arr.size() - 1; i++)
            {
                if ((arr[i + 1] - arr[i]) != inc)
                {
                    return false;
                }
            }
            return true;
        }
};
        

Conclusion

L’approche de résolution de ce problème est simple et directe. Elle repose principalement sur le tri du tableau suivi d’une vérification linéaire des différences entre les éléments.

Dans une approche alternative, il serait possible de résoudre ce problème de manière plus efficace en se basant uniquement sur des boucles et des opérations élémentaires, sans recourir à une fonction de tri.