1.删除链表第K个节点 AC100%
n,k=map(int,input().split()) a=list(map(int,input().split())) res=a[:k-1]+a[k:] ress='' for x in res: ress+=str(x)+' ' print(ress[:-1])
2.求s中的所有子串字典序第k小的一个 ac 100%
a=input() k=int(input()) res=[] q=min(6,len(a)) for l in range(1,q): for i in range(len(a)-l+1): res.append(a[i:i+l]) res=list(set(res)) res.sort() print(res[k-1])
3.给一个正整数N(1<=N<=1e12),把N拆成任意两个正整数相加,求这两个数的数位和相加的最大值。 ac 100%
def core(a): a=str(a) def dfs(now): if now=='': return 0 res=0 temp=int(now) temp//=10 new=str(int(temp)-1) res=max(dfs(now[:-1])+int(now[-1]),res) if int(new)>=0: if now[-1]!='9': res=max(res,dfs(new)+10+int(now[-1])) return res return dfs(a) n=int(input()) for _ in range(n): a=int(input()) print(core(a))5.给一个字符串s,求要把区间[l,r]全部分割成回文串的最少分割次数。AC 100%
s=input() n=int(input()) dp={} def dfs1(i,j): if (i,j) in dp: return dp[(i,j)] if i>j: return True if i==j: return True if j==i+1: return s[i]==s[j] if s[i]!=s[j]: return False res=dfs1(i+1,j-1) dp[(i,j)]=res return res cache={} def dfs(l,r): if (l,r) in cache: return cache[(l,r)] if l>r: return 0 if l==r: return 1 res=1e9 for k in range(l,r+1): if dfs1(l,k): res=min(1+dfs(k+1,r),res) cache[(l,r)]=res return res for _ in range(n): l,r=map(int,input().split()) print(dfs(l-1,r-1))好气,第三题考试的时候有一点BUG,一直通过0,刚考完就把BUG找出来了。
全部评论
(3) 回帖