周赛笔记225


一、替换时间

给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。

有效的时间为 00:0023:59 之间的所有时间,包括 00:0023:59

替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。

# if-else
class Solution:
    def maximumTime(self, time: str) -> str:
        tmp=list(time)
        for i,num in enumerate(tmp):
            if num=='?':
                if i==0: 
                    if tmp[1]<='3'or tmp[1]=='?':
                        tmp[i]='2'
                    else:
                        tmp[i]='1'
                elif i==1:
                    if tmp[0]=='2':
                        tmp[i]='3'
                    else:
                        tmp[i]='9'
                elif i==3: tmp[i]='5'
                elif i==4: tmp[i]='9'
        return ''.join(tmp)
class Solution(object):
    def maximumTime(self, time):
        h = time[:2]
        m = time[3:]
        for i in range(23,-1,-1):
            t='{:02}'.format(i)
            if all([j==k or j=='?' for j,k in zip(h,t)]):
                h=t
                break

        for i in range(59,-1,-1):
            t='{:02}'.format(i)
            if all([j==k or j=='?' for j,k in zip(m,t)]):
                m=t
                break
        return '{}:{}'.format(h,m)

# copy

二、满足三条件之一需改变的最少字符数

class Solution:
    def minCharacters(self, a: str, b: str) -> int:
        ca=Counter(a)
        cb=Counter(b)
        na,nb=len(a),len(b)

        ans=float('inf')
        cnta,cntb=0,0
        for i in range(25):
            cnta+=ca[chr(ord('a')+i)]
            cntb+=cb[chr(ord('a')+i)]
            t1=na-cnta+cntb
            t2=cnta+nb-cntb
            ans=min(ans,t1,t2)

        for i in range(26):
            t3=na-ca[chr(ord('a')+i)]+nb-cb[chr(ord('a')+i)]
            ans=min(t3,ans)
        return ans

# 暴力枚举

三、找出第 K 大的异或坐标值

class Solution:
    def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:
        rows,cols=len(matrix),len(matrix[0])
        t=[[0 for i in range(cols)] for j in range(rows)]
        t[0][0]=matrix[0][0]
        for i in range(1,rows):
            t[i][0]=t[i-1][0]^matrix[i][0]
        for i in range(1,cols):
            t[0][i]=t[0][i-1]^matrix[0][i]
        for i in range(1,rows):
            for j in range(1,cols):
                t[i][j]=t[i-1][j]^t[i][j-1]^t[i-1][j-1]^matrix[i][j]

        ans=[t[i][j] for i in range(rows) for j in range(cols)]
        ans.sort(reverse=True)
        return ans[k - 1]

四、放置盒子

#归纳

文章作者: ╯晓~
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ╯晓~ !
评论
  目录