Leetcode1217. Игровые фишки

Каждый день Литкод

Источник темы:

Решение 1: жадность

Сначала легко вывести:

  1. При переходе с четной (нечетной) позиции на другую четную (нечетную) позицию минимальные накладные расходы в это время равны 0;
  2. Для перехода из четной (нечетной) позиции в другую нечетную (четную) позицию минимальные служебные данные в это время равны 1.

Тогда мы можем рассматривать начальные «фишки» в каждой четной позиции в целом и «фишки» в каждой нечетной позиции в целом. Поскольку наша цель состоит в том, чтобы наконец переместить все «фишки» в одну и ту же позицию, есть только две ситуации для конечной позиции:

  1. Переходя к четной позиции, минимальной стоимостью в это время является количество «фишек» в исходной нечетной позиции.
  2. Перейти на нечетную позицию, минимальная стоимость в это время равна количеству «фишек» в исходной четной позиции

код:

/*
 * @lc app=leetcode.cn id=1217 lang=cpp
 *
 * [1217] 玩筹码
 */

// @lc code=start
class Solution
{
    
    
public:
    int minCostToMoveChips(vector<int> &position)
    {
    
    
        int odd = 0, even = 0;
        for (int &index : position)
        {
    
    
            if (index % 2)
                odd++;
            else
                even++;
        }
        return min(odd, even);
    }
};
// @lc code=end

результат:

вставьте сюда описание изображения

Анализ сложности:

Временная сложность: O(n), где n — длина позиции массива, и выполняется только один обход массива.

Пространственная сложность: O(1).

Supongo que te gusta

Origin blog.csdn.net/ProgramNovice/article/details/131568114
Recomendado
Clasificación