[Swift] Assign Cookies

January 02, 2017 0 Comments

Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is the minimum size of a cookie that the child will be content with; and each cookie j has a size sj. If sj >= gi, we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.
Note:
You may assume the greed factor is always positive.
You cannot assign more than one cookie to one child.
Example 1:
Input: [1,2,3], [1,1]

Output: 1

Explanation: You have 3 children and 2 cookies. The greed factors of 3 children are 1, 2, 3.
And even though you have 2 cookies, since their size is both 1, you could only make the child whose greed factor is 1 content.
You need to output 1.
Example 2:
Input: [1,2], [1,2,3]

Output: 2

Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2.
You have 3 cookies and their sizes are big enough to gratify all of the children,
You need to output 2.

兩個陣列都要先排序過,然後依序將每個餅乾和小孩去配看是否符合,記得分配過的餅乾和小朋友就要跳過。


        var Ars_g = g.sorted()
        var Ars_s = s.sorted()
        var res = 0
        if (Ars_g.count > 0 && Ars_s.count > 0) {
            var i=0, j=0
            while j < Ars_s.count {
                while i < Ars_g.count {
                    //print("Ars_g[i]: \(Ars_g[i]), Ars_s[j]: \(Ars_s[j])")
                    if Ars_g[i] <= Ars_s[j] {
                        res += 1
                        j += 1
                    }
                    if j >= Ars_s.count { break }
                    i += 1
                }
                
                j += 1
                i = res
            }
        }

        return res

0 comments: