> 文档中心 > 【力扣题解】1217. 玩筹码

【力扣题解】1217. 玩筹码


😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈

文章目录

    • 一、题目
      • 1、题目描述
      • 2、基础框架
      • 3、原题链接
    • 二、解题报告
      • 1、思路分析
      • 2、代码详解

一、题目

1、题目描述

有 n 个筹码。第 i 个芯片的位置是 position[i] 。
我们需要把所有筹码移到同一个位置。在一步中,我们可以将第 i 个芯片的位置从 position[i] 改变为:
position[i] + 2 或 position[i] - 2 ,此时 cost = 0
position[i] + 1 或 position[i] - 1 ,此时 cost = 1
返回将所有筹码移动到同一位置上所需要的 最小代价 。

2、基础框架

  • Java版本框架代码如下:
class Solution {    public int minCostToMoveChips(int[] position) { }}

3、原题链接

1217. 玩筹码

二、解题报告

1、思路分析

       (1)根据题目我们可以发现,筹码移动偶数个位置cost为零,筹码移动奇数个位置cost为一。也就是说把在奇数位置上的筹码移动到偶数位置上或者把在偶数位置上的筹码移动到奇数位置上,cost为一,把在奇数位置上的筹码移动到奇数位置上或者把在偶数位置上的筹码移动到偶数位置上,cost为零。
       (2)所以我们只需要分别统计筹码的位置是奇数的个数和是偶数的个数,若偶数位置的个数多,那么我们只移动奇数位置的个数,所以结果就是奇数位置的个数。当奇数位置的个数多时也是一样的道理。

2、代码详解

class Solution {    public int minCostToMoveChips(int[] position) { int odd = 0; int even = 0; for(int i = 0;i < position.length;i++) {     if(position[i]%2 == 0) {  even++;     }else {  odd++;     } } return even > odd ? odd:even;    }}