1.类似于两数之和,拿一个cache来记录之前第一个目标值就行了。注意需要处理一些特殊情况。
class Solution: def find_children(self , t , a ): cache={} res=[] for i in range(len(a)): if a[i] in cache: if res==[]: res=[cache[a[i]],i] else: if cache[a[i]]<res[0]: res=[cache[a[i]],i] if cache[a[i]]==res[0]: if i<res[1]: res=[cache[a[i]],i] if t-a[i] not in cache: cache[t-a[i]]=i return res if res!=[] else [-1,-1]
2.找到数组的最大公约数。暴力直接从 数组里面最小的数找到1,看是否满足条件。
class Solution: def cal_max_common_factor(self , a ): # write code here def isin(x): for y in a: if y//x!=y/x: return False return True q=min(a) for i in range(q,0,-1): if isin(i): return i
3.输出菱形,定义一个函数sub(x)用于输出长度为x的时候的数字排列。之后暴力解就行了。
class Solution: def print_diamond(self , n ): if not n&1: return '' c=n>>1 def sub(n): t = str((n >> 1) + 1) now = '' p = '' for i in range(1, int(t)): now += str(i) p = str(i) + p now = now + t + p return now res=[sub(n)] for i in range(c): t=i+1 temp='' q='' for j in range(t): q+='*' temp=q+sub(n-2*t)+q res.append(temp) res.insert(0,temp) ret='' for x in res: ret+=x+'|' return ret[:-1]
全部评论
(0) 回帖