算法 - 贪心 01(Swift版本)

49 阅读1分钟

贪心基础讲解

题目1:455.分发饼干

讲解
leetcode

// @lc code=start
class Solution {
    func findContentChildren(_ g: [Int], _ s: [Int]) -> Int {
        let g = g.sorted()
        let s = s.sorted()
        var res = 0
        var gi = 0
        for si in 0..<s.count {
            if gi < g.count, s[si] >= g[gi] {
                res += 1
                gi += 1
            }
        }
        return res
    }
}
// @lc code=end

题目2:

讲解
leetcode

// @lc code=start
class Solution {
    func wiggleMaxLength(_ nums: [Int]) -> Int {
        var curdiff = 0
        var prediff = 0
        var res = 1
        for i in 0..<nums.count - 1 {
            let curdiff = nums[i + 1] - nums[i]
            if (prediff <= 0 && curdiff > 0) || (prediff >= 0 && curdiff < 0) {
                prediff = curdiff
                res += 1
            }
        }
        return res
    }
}
// @lc code=end

题目3:53. 最大子数组和

讲解
leetcode

// @lc code=start
class Solution {
    func maxSubArray(_ nums: [Int]) -> Int {
        var res = -Int.max
        var sum = 0 
        for i in 0..<nums.count {
            sum += nums[i]
            res = max(res, sum)
            if sum < 0 { sum = 0 }
        }
        return res
    }
}
// @lc code=end