455. 分發(fā)餅干(Python)

題目

難度:★★☆☆☆
類型:數(shù)組

假設(shè)你是一位很棒的家長(zhǎng),想要給你的孩子們一些小餅干。但是,每個(gè)孩子最多只能給一塊餅干。對(duì)每個(gè)孩子 i ,都有一個(gè)胃口值 gi ,這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干 j ,都有一個(gè)尺寸 sj 。如果 sj >= gi ,我們可以將這個(gè)餅干 j 分配給孩子 i ,這個(gè)孩子會(huì)得到滿足。你的目標(biāo)是盡可能滿足越多數(shù)量的孩子,并輸出這個(gè)最大數(shù)值。

注意:

你可以假設(shè)胃口值為正。
一個(gè)小朋友最多只能擁有一塊餅干。

示例

示例 1:
輸入: [1,2,3], [1,1]
輸出: 1
解釋:
你有三個(gè)孩子和兩塊小餅干,3個(gè)孩子的胃口值分別是:1,2,3。
雖然你有兩塊小餅干,由于他們的尺寸都是1,你只能讓胃口值是1的孩子滿足。
所以你應(yīng)該輸出1。

示例 2:
輸入: [1,2], [1,2,3]
輸出: 2
解釋:
你有兩個(gè)孩子和三塊小餅干,2個(gè)孩子的胃口值分別是1,2。
你擁有的餅干數(shù)量和尺寸都足以讓所有孩子滿足。
所以你應(yīng)該輸出2.

解答

先將孩子按照胃口從小到大排序,餅干從小到大排序,我們需要以下流程統(tǒng)計(jì)滿足條件的孩子:

  1. 計(jì)數(shù)器,用于統(tǒng)計(jì)滿足胃口的小孩數(shù)量,每當(dāng)滿足胃口時(shí),計(jì)數(shù)器+1;

  2. 指針,這里定義兩個(gè)指針,一個(gè)用于小孩數(shù)組(g_),一個(gè)用于餅干數(shù)組(s_),兩個(gè)數(shù)組均從小到大進(jìn)行遍歷;

  3. 條件,如果當(dāng)前餅干大于孩子胃口,那么要執(zhí)行的操作是:計(jì)數(shù)器+1,小孩數(shù)組指針+1,餅干數(shù)組指針+1;否則只需要把餅干數(shù)組指針+1即可,考察下一個(gè)餅干。

  4. 循環(huán)控制。這里用指針是否越界來(lái)進(jìn)行循環(huán)控制,當(dāng)任意指針越界時(shí)跳出循環(huán)。

class Solution:
    def findContentChildren(self, g, s):
        g.sort()                                # 小孩按照胃口從小到大排序
        s.sort()                                # 餅干按照從小到大排序
        g_, s_, count = 0, 0, 0                 # 初始化小孩指針、餅干指針和計(jì)數(shù)器
        while g_ < len(g) and s_ < len(s):      # 循環(huán)控制
            if g[g_] <= s[s_]:                  # 如果當(dāng)前餅干滿足了當(dāng)前小孩的胃口
                count += 1                      # 計(jì)數(shù)器+1
                g_ += 1                         # 下一個(gè)小孩
                s_ += 1                         # 下一塊餅干
            else:                               # 如果沒(méi)有滿足
                s_ += 1                         # 看看下一塊餅干
        return count                            # 返回滿足胃口的小孩數(shù)

如有疑問(wèn)或建議,歡迎評(píng)論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,380評(píng)論 0 17
  • 題目描述 分發(fā)餅干 假設(shè)你是一位很棒的家長(zhǎng),想要給你的孩子們一些小餅干。但是,每個(gè)孩子最多只能給一塊餅干。對(duì)每個(gè)孩...
    一只可愛(ài)的檸檬樹(shù)閱讀 459評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,681評(píng)論 1 32
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,690評(píng)論 1 51
  • 假設(shè)你是一位很棒的家長(zhǎng),想要給你的孩子們一些小餅干。但是,每個(gè)孩子最多只能給一塊餅干。對(duì)每個(gè)孩子 i ,都有一個(gè)胃...
    不胖二十斤不改名zz閱讀 302評(píng)論 0 1

友情鏈接更多精彩內(nèi)容