兩人分糖果 求最大種類數量

2021-10-09 06:07:17 字數 1895 閱讀 5277

給定乙個偶數長度的陣列,其中不同的數字代表著不同種類的糖果,每乙個數字代表乙個糖果。你需要把這些糖果平均分給乙個弟弟和乙個妹妹。返回妹妹可以獲得的最大糖果的種類數。

示例 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],妹妹有兩種不同的糖果,弟弟只有一種。這樣使得妹妹可以獲得的糖果種類數最多。

注意:

php**:

<?php 

# -*- coding: utf-8 -*-

/*** @author: wowlnan

** @github:

** @blog:

**/class

solution

}return$k+

1>=

$mid

?$mid:$k

+1;}

}$s=new

solution()

;print($s

->

distributecandies([

1,1,

2,2,

3,3,

4,4]

)."\n");

?>

python**:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

"""@author: wowlnan

@github:

@blog:

"""class

solution

:def

distributecandies

(self, candies: list[

int])-

>

int:

a=candies.copy(

) a=

sorted

(a) k=

1 b=a[0]

l=len(a)

mid=l//

2for i in

range

(l):

if b!=a[i]

: k+=

1 b=a[i]

if k>=mid:

return mid

return k

突然發現有點意思的現象:

看下最流行的提交範例:

看過之前的一些效率較高的演算法中,有使用set的類似情況。流行的提交範例**簡潔效率卻不好看。可能是某些測試案例(test case)對set「不友好」,導致效率較低。如果是比較數量級較大時,須慎重考慮。

啟用腦細胞 兩人猜數問題

先來一道比較簡單的吧 小明和小強問張老師的生日,張老師在紙上寫下了下面幾個生日,說他的生日在下面這些生日中 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 假定張老師的生日是m月n日,張老師把m值告訴了小明,把n值告訴了小強,張老師問他們知道...

C 分糖果問題 求一組數的最大公倍數

給各個部門分糖果,滿足以下要求 1.各個部門分的糖果數一樣 2.各個部門分得的糖果能平均分配 3.公司總共15個部門 4.糖果數最少 方法 該題目間接求各個部門人數的最小公倍數。遞迴計算,求n個數的最小公倍數,相當於求第乙個數和剩下n 1個數的最小公倍數。include 計算兩個數的最小公倍數 lo...

輾轉相除法求兩數最大公約數

輾轉相除法是求兩個自然數的最大公約數的一種方法,也叫歐幾里德演算法。例如,求 319,377 319 377 0 餘319 319,377 377,319 377 319 1 餘58 377,319 319,58 319 58 5 餘29 319,58 58,29 58 29 2 餘0 58,29 ...