Leetcode 每日一题:

一、题目:

 

 

 

 

暴力法:

1、value 从target均值开始,对数组求和

2、直到数组和大于等于target;

3、数组中每个数均小于等于target 均值,value再增加数组和也是不会变的。

  数组和s =target 或是 s = sum(arr)(等于最初数组和)直接返回 value

  

 

class Solution:
    def findBestValue(self, arr: List[int], target: int) -> int:
        s=0
        s1=0
        max1 = max(arr)
        d=  target//len(arr)
        while True:
            s1= s
            s=0
            for i in range(len(arr)):
                
                if arr[i]>d:
                    s+=d
                else:
                    s+=arr[i]
           
            if s<target and s!=sum(arr):

                d+=1
            elif s==target:
                return d
            elif s==sum(arr):
                return d
            else:
                break
        # print(s1,s,d)
        if abs(s1-target)<=abs(s-target):     

            return d-1
        else:
            return d

  

posted @ 2020-06-14 23:12  SuckChen  阅读(614)  评论(0编辑  收藏  举报