codility Peaks

来源:互联网 发布:iphone导出照片软件 编辑:程序博客网 时间:2024/05/22 08:10

Question:codility Lesson10 Peaks

My Answer:

#!/usr/bin/env python3# -*- coding : utf-8 -*-from math import sqrtdef solution(A):    lenA = len(A)    if lenA < 3:        return 0    peak = [0] * lenA    for i in range(1,lenA-1):        peak[i] = peak[i - 1]        if A[i] > A[i-1] and A[i] > A[i + 1]:            peak[i] += 1    peak[-1] = peak[-2]    if peak[-1] == 0:        return 0    maxblocks = 0    for i in range(1,int(sqrt(lenA)) + 1,1):        if lenA % i == 0:            block = i            blocksize = lenA // i            if peak[blocksize - 1] > 0:                for each_block in range(blocksize,lenA,blocksize):                    if peak[each_block - 1] == peak[each_block + blocksize - 1]:                        break                else:                    maxblocks = block            if i * i == lenA:                continue            block = lenA // i            blocksize = i            if peak[blocksize - 1] > 0:                for each_block in range(blocksize,lenA,blocksize):                    if peak[each_block - 1] == peak[each_block + blocksize - 1]:                        break                else:                    return block    return maxblocksprint(solution([1,2,3,4,5]))print(solution([1,3,4,2,8]))print(solution([1,3,4,2]))print(solution([1,2,3,4,3,4,1,2,3,4,6,2]))print(solution([1,2,3,4,3,4,1,2,3,4,6,2,5,8,7,9]))
原创粉丝点击