С# Сгруппировать рядом стоящие координаты. Array/List

Задавал уже такой вопрос. но немного не правильно сформулировал его. Имеются координаты в массиве (X и Y):

359x127
513x127
512x127
360x127
513x126
359x126
360x126
512x126
359x128

Координаты хранятся тут:

List<(int, int)> coords = new List<(int, int)>();

Нужно удалить похожие дубликаты и оставить уникальные. Похожие - это те которые различаются на +-1, например вот эти:

513x127
512x127
513x126

Подскажите как эти координаты объединить или сгруппировать в одну по наибольшему значению X и Y из всего списка?

UPD Пока получился вот такой костыль:

List<(int, int)> coords = new List<(int, int)>() {
(553,126),
(554,126),
(554,127),
(553,126),
(41,126),
(40,126),
(45,120),
(44,120),
(46,120),
(553,127),
(1001,44),
(1002,45)
};

List<(int, int)> newcoords = new List<(int, int)>();
coords = coords.GroupBy(x => x.Item1).Select(x => x.First()).ToList();

            for (var j = 0; j < coords.Count(); j++)
            {

                //Console.WriteLine(coords[j].Item1 + "x" + coords[j].Item2);
                for (var i = 0; i < coords.Count(); i++)
                {
                    // Console.WriteLine(coords[j].Item1+ "==" +coords[i].Item1);
                    if (Math.Abs(coords[j].Item1 - coords[i].Item1)==1) { 
                        coords.RemoveAt(i);
                    }
                }
                newcoords.Add(coords[j]);

            }

Ответы (0 шт):