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