讨论/题目交流/python提交失败但测试同一样例通过/
python提交失败但测试同一样例通过

在提交时出现了测试通过提交失败的情况。
image.png
以下是代码:

class Solution:
    dic_dp={}

    def dp(self,x:int,y:int,list1:List[int],list2:List[int],val:int):

        if (x==0 and y>=0 and y<=2) or (x>=1 and x<=2 and y==0):
            return val

        ans1,ans2,ans3=0,0,0

        x1=x-3
        y1=y
        if x1>=0 and y1>=0:
            if (x1,y1) in self.dic_dp:
                ans1=self.dic_dp[(x1,y1)]
            else:
                i=0
                val1=val
                while i<3:
                    val1*=10
                    val1+=list1[i]
                    i+=1
                ans1=self.dp(x1,y1,list1[3:],list2[:],val1)
                self.dic_dp[(x1,y1)]=ans1

        x2=x-1
        y2=y-1
        if x2>=0 and y2>=0:
            if (x2,y2) in self.dic_dp:
                ans2=self.dic_dp[(x2,y2)]
            else:
                val2=val
                num_max=max(list1[0],list2[0])
                num_min=min(list1[0],list2[0])
                val2*=10
                val2+=num_max
                val2*=10
                val2+=num_min
                ans2=self.dp(x2,y2,list1[1:],list2[1:],val2)
                self.dic_dp[(x2,y2)]=ans2

        x3=x
        y3=y-3
        if x3>=0 and y3>=0:
            if (x3,y3) in self.dic_dp:
                ans3=self.dic_dp[(x3,y3)]
            else:
                i=0
                val3=val
                while i<3:
                    val3*=10
                    val3+=list2[i]
                    i+=1
                ans3=self.dp(x3,y3,list1[:],list2[3:],val3)
                self.dic_dp[(x3,y3)]=ans3

        return max(ans1,ans2,ans3)

    def largestMultipleOfThree(self, digits: List[int]) -> str:
        
        ans=[]
        remainder_0=[]
        remainder_1=[]
        remainder_2=[]
        

        for x in digits:
            if x%3==0:
                remainder_0.append(x)
            elif x%3==1:
                remainder_1.append(x)
            else:
                remainder_2.append(x)
        
        ans.extend(remainder_0)

        remainder_1.sort(reverse=True)
        remainder_2.sort(reverse=True)

        ans_without_0=self.dp(len(remainder_1),len(remainder_2),remainder_1,remainder_2,0)
        while ans_without_0>0:
            ans.append(ans_without_0%10)
            ans_without_0//=10
        ans.sort(reverse=True)
        ans_str=''
        for i in range(len(ans)):
            ans_str+=str(ans[i])

        if ans_str=='':
            return ''
        elif ans_str[0]=='0':
            return '0'
        else:
            return ans_str

简而言之,我在Solution类里新建了一个字典dic_dp,新建了一个函数dp,并且largestMultipleOfThree调用了dp(dp查询并修改了dic_dp),然后返回了答案。
我已经尝试了:关闭浏览器并重启后提交。但问题没有解决。
请问这是否是报错的原因?如果是应该怎样修改?烦请指教。

展开讨论
共 2 个讨论

emmm
进函数用一下dict.clear()
你的字典在第一个样例之后没有清空 导致之后测试用了之前用例的数据

我不喜欢往solution类里面写东西,比如存储dp,我一般会添一个函数。所以我也不会遇到这样的问题。