zoukankan      html  css  js  c++  java
  • 【leetcode】1217. Play with Chips

    题目如下:

    There are some chips, and the i-th chip is at position chips[i].

    You can perform any of the two following types of moves any number of times (possibly zero) on any chip:

    • Move the i-th chip by 2 units to the left or to the right with a cost of 0.
    • Move the i-th chip by 1 unit to the left or to the right with a cost of 1.

    There can be two or more chips at the same position initially.

    Return the minimum cost needed to move all the chips to the same position (any position).

    Example 1:

    Input: chips = [1,2,3]
    Output: 1
    Explanation: Second chip will be moved to positon 3 with cost 1. First chip will be moved to position 3 with cost 0. 
    Total cost is 1.

    Example 2:

    Input: chips = [2,2,2,3,3]
    Output: 2
    Explanation: Both fourth and fifth chip will be moved to position two with cost 1. Total minimum cost will be 2.

    Constraints:

    • 1 <= chips.length <= 100
    • 1 <= chips[i] <= 10^9

    解题思路:最终所有的chips处于的位置要么是偶数位要是是奇数位:如果是偶数位,那么初始就处于偶数位chips移动到最终位置不需要任何cost,而初始处于奇数位的chips移动到最近的偶数位只需要1个cost;反之如果最终位置是奇数位也是一样的。所以答案就是初始处于奇数位的chips和除数处于偶数位的chips的数量的较小值。

    代码如下:

    class Solution(object):
        def minCostToMoveChips(self, chips):
            """
            :type chips: List[int]
            :rtype: int
            """
            odd = 0
            even = 0
            for i in chips:
                if i % 2 == 1:
                    odd += 1
                else: even += 1
            return min(odd,even)
  • 相关阅读:
    关键字 final
    继承中的构造方法
    方法的重写
    使用tar 和 split 将文件打包、压缩并分割成指定大小
    标准Web系统的架构分层
    Android的安全机制 1 -- 老罗
    Android 在 SElinux下 如何获得对一个内核节点的访问权限
    移动数据 流程分析
    ARM Linux 3.x的设备树(Device Tree)
    如何分析Android的Log
  • 原文地址:https://www.cnblogs.com/seyjs/p/11646372.html
Copyright © 2011-2022 走看看