zoukankan      html  css  js  c++  java
  • LeetCode

    链接

    575. Distribute Candies

    题意

    给兄妹分糖果,糖果数量表示为偶数长度的数组,不同的数字代表不同的糖果,每个数字代表一颗糖果。现要求兄妹分得的糖果数量一样多,但是妹妹的种类必须尽量多。返回妹妹获得的糖果种类数。

    思路

    第一种:先对数组排序,那么同种糖果归类到了一起。只需遍历数组,每种糖果取一种,直到数量达到一半。
    第二种:直接将每种糖果存入set,则可获得所有糖果的种类,若种类大于一半,则返回数组长度的一半(因为妹妹最多获得一半数量糖果),若小鱼

    代码

    Java:

    // 思路1
    public class Solution {
        public int distributeCandies(int[] candies) {
            int res = 0;
            Arrays.sort(candies);
            for (int i = candies.length - 2; i >= 0; i--) {
                // 如果糖果相同,那么先跳过所有相同的,最后再取一个
                // 但如果i为0,已经没有糖果了,因此这个也要取
                if (candies[i] == candies[i+1]) {
                    if (i == 0) res++;
                    continue;
                }
                res++;
                if (res == candies.length / 2) return res;
            }
            if (candies[0] != candies[1]) res++;
            return res;
        }
    }
    
    // 思路2
    public class Solution {
        public int distributeCandies(int[] candies) {
            Set<Integer> kinds = new HashSet<>();
            for (int candy : candies) kinds.add(candy);
            return kinds.size() >= candies.length / 2 ? candies.length / 2 : kinds.size();
        }
    }
    
    
  • 相关阅读:
    传球接力
    业务办理
    P2077 红绿灯
    【UR #4】元旦激光炮
    P1939 【模板】矩阵加速(数列)
    #82. 【UR #7】水题生成器
    Visible Trees HDU
    创始人的领导力和合伙人选择
    面向对象笔试题练习一
    MicroPython+北斗+GPS+GPRS:TPYBoardv702短信功能使用说明
  • 原文地址:https://www.cnblogs.com/zyoung/p/6861312.html
Copyright © 2011-2022 走看看