讨论/题目交流/🏆 第 188 场力扣周赛/
🏆 第 188 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛】

image.png

3 分 - 用栈操作构建数组
4 分 - 形成两个异或相等数组的三元组数目
5 分 - 收集树上所有苹果的最少时间
7 分 - 切披萨的方案数

展开讨论
力扣 (LeetCode)发起于 2020-05-10
最近编辑于 2020-05-10

12:01做出来的t4,难受啊
1

class Solution:
    def buildArray(self, target: List[int], n: int) -> List[str]:
        it=itertools.count(1)
        res=[]
        for j in target:
            for i in it:
                if i==j:
                    res.append('Push')
                    break
                else:
                    res.extend(['Push','Pop'])
        return res

2

class Solution:
    def countTriplets(self, arr: List[int]) -> int:
        a=list(itertools.accumulate(arr,int.__xor__,initial=0))
        return sum(k-i for k in range(len(a)-1) for i in range(k) if a[i]==a[k+1])

3

class Solution:
    def minTime(self, n: int, edges: List[List[int]], hasApple: List[bool]) -> int:
        d=collections.defaultdict(lambda:[])
        for k,v in edges:
            d[k].append(v)
        def f(n):
            x=sum(f(i) for i in d[n])
            return x+2 if x else hasApple[n] and 2
        return max(0,f(0)-2)

4

class Solution:
    def ways(self, pizza: List[str], k: int) -> int:
        r,c=len(pizza),len(pizza[0])
        @functools.lru_cache(None)
        def f(x,y,k):
            if not k:
                return any('A' in p[y:c] for p in pizza[x:r])
            res=0
            for i in range(x+1,r):
                if any('A' in p[y:c] for p in pizza[x:i]):
                    res+=f(i,y,k-1)
            for j in range(y+1,c):
                if any('A' in p[y:j] for p in pizza[x:r]):
                    res+=f(x,j,k-1)
            return res
        return f(0,0,k-1)%1000000007
展开全部 12 讨论