CodingTour
ARTS #128

Algorithm

本周选择的算法题是:Reducing Dishes

规则

A chef has collected data on the satisfaction level of his n dishes. Chef can cook any dish in 1 unit of time.

Like-time coefficient of a dish is defined as the time taken to cook that dish including previous dishes multiplied by its satisfaction level i.e. time[i] * satisfaction[i].

Return the maximum sum of like-time coefficient that the chef can obtain after dishes preparation.

Dishes can be prepared in any order and the chef can discard some dishes to get this maximum value.

Example 1:

Input: satisfaction = [-1,-8,0,5,-9]
Output: 14
Explanation: After Removing the second and last dish, the maximum total like-time coefficient will be equal to (-1*1 + 0*2 + 5*3 = 14).
Each dish is prepared in one unit of time.

Example 2:

Input: satisfaction = [4,3,2]
Output: 20
Explanation: Dishes can be prepared in any order, (2*1 + 3*2 + 4*3 = 20)

Example 3:

Input: satisfaction = [-1,-4,-5]
Output: 0
Explanation: People don't like the dishes. No dish is prepared.

Example 4:

Input: satisfaction = [-2,5,-1,0,3,-3]
Output: 35

Constraints:

  • n == satisfaction.length
  • 1 <= n <= 500
  • -1000 <= satisfaction[i] <= 1000

Solution

class Solution:
    def maxSatisfaction(self, satisfaction: List[int]) -> int:
        satisfaction.sort()
        ans, curr = 0, 0
        while satisfaction and satisfaction[-1] + curr > 0:
            curr += satisfaction.pop()
            ans += curr
        
        return ans

Review

Clean Architecture for Enterprise Flutter Application

Clean Architecture 的侧重点在于代码的组织,其关注业务逻辑封装的同时,也看重交付机制的分离。从依赖方向上看,只有外层才能依赖内层,内层代码不知道外层的功能,如图:

作者在文中不仅给出了 Clean Architecture 的定义,还给出并描述了完整的细节,如目录结构概览、目录的职责与作用、数据通信的范本等,是不错的 Clean Architecture 入门参考。

Tip

了解 Web CSP 安全策略。

Share

为什么 OC 不推荐使用 try-catch?