zoukankan      html  css  js  c++  java
  • [Swift]LeetCode575. 分糖果 | Distribute Candies

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9852286.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given an integer array with even length, where different numbers in this array represent different kinds of candies. Each number means one candy of the corresponding kind. You need to distribute these candies equally in number to brother and sister. Return the maximum number of kinds of candies the sister could gain.

    Example 1:

    Input: candies = [1,1,2,2,3,3]
    Output: 3
    Explanation:
    There are three different kinds of candies (1, 2 and 3), and two candies for each kind.
    Optimal distribution: The sister has candies [1,2,3] and the brother has candies [1,2,3], too. 
    The sister has three different kinds of candies. 
    

     Example 2:

    Input: candies = [1,1,2,3]
    Output: 2
    Explanation: For example, the sister has candies [2,3] and the brother has candies [1,1]. 
    The sister has two different kinds of candies, the brother has only one kind of candies. 
    

     Note:

    1. The length of the given array is in range [2, 10,000], and will be even.
    2. The number in given array is in range [-100,000, 100,000].

    给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。

    示例 1:

    输入: candies = [1,1,2,2,3,3]
    输出: 3
    解析: 一共有三种种类的糖果,每一种都有两个。
         最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。
    

    示例 2 :

    输入: candies = [1,1,2,3]
    输出: 2
    解析: 妹妹获得糖果[2,3],弟弟获得糖果[1,1],妹妹有两种不同的糖果,弟弟只有一种。这样使得妹妹可以获得的糖果种类数最多。
    

    注意:

    1. 数组的长度为[2, 10,000],并且确定为偶数。
    2. 数组中数字的大小在范围[-100,000, 100,000]内。

     380ms

    1 class Solution {
    2     func distributeCandies(_ candies: [Int]) -> Int {
    3         let cSet:Set<Int> = Set(candies)
    4         return min(cSet.count,candies.count/2)
    5     }
    6 }

    400ms

     1 class Solution {
     2     func distributeCandies(_ candies: [Int]) -> Int {
     3         //Set存储相同类型的不同值,没有定义的顺序。
     4         var kind:Set<Int> = Set<Int>()
     5         for i in candies
     6         {
     7             kind.insert(i)
     8         }
     9         return min(candies.count / 2, kind.count)
    10     }
    11 }

    404ms

    1 class Solution {
    2     func distributeCandies(_ candies: [Int]) -> Int {
    3         let dict = candies.reduce(into: [:]) { $0[$1, default: 0] += 1 }
    4         return min(dict.keys.count, candies.count/2)
    5     }
    6 }

    1552ms

     1 class Solution {
     2     func distributeCandies(_ candies: [Int]) -> Int {
     3         var hash = Set<Int>()
     4 
     5         for i in 0...candies.count - 1 {
     6             if hash.count == (candies.count / 2) { 
     7                 return candies.count / 2 
     8             }
     9             hash.insert(candies[i])
    10         }
    11         
    12         return hash.count
    13     }
    14 }
  • 相关阅读:
    Golang :索引值对的数组
    MySql-BlackHole:黑洞引擎
    golang fmt 中的 Sprintf、Fprintf和 Printf函数
    golang 中的 rune 和 byte
    mysql 全文索引
    Python 原始字符串
    如何给博客园(或者CSDN)设置域名访问
    CPU、内存、磁盘三者的关系
    018.redis 阶段性总结:1T 以上海量数据+10 万以上 QPS 高并发+ 99.99% 高可用
    017.redis 在实践中的一些常见问题以及优化思路(包含 linux 内核参数优化)
  • 原文地址:https://www.cnblogs.com/strengthen/p/9852286.html
Copyright © 2011-2022 走看看