阴阳神万物主
发表于 2020-1-23 21:48:37
zltzlt 发表于 2020-1-23 21:34
解答错误
输入:
想康康我的解法能不能解对这个,但是单单拷贝就让我的 idle 陷入无响应状态QWQ
zltzlt
发表于 2020-1-23 21:51:26
阴阳神万物主 发表于 2020-1-23 21:48
想康康我的解法能不能解对这个,但是单单拷贝就让我的 idle 陷入无响应状态QWQ
呵呵{:10_256:}用记事本试试
阴阳神万物主
发表于 2020-1-23 21:51:40
我来康康能否承受住这道题目。
def solve(lst:'list of int >= 0',debug=False)->list:
if lst:
loop = lst[:1]
for i in range(len(lst)-1):
l = len(loop)
if lst != loop or lst != loop[(i+1)%l]:
loop = lst[:i+1] if lst == loop else lst[:i+2]
if debug:
print('调试',loop)
return len(loop)
else:
return 0
if __name__ == '__main__':
print('示例1 输出:',solve())
print('示例2 输出:',solve())
print('示例3 输出:',solve(,debug=1))
print('别人错的12#',solve())
print('别人错的11#',solve())
print('别人错的16#',solve())
zltzlt
发表于 2020-1-23 21:53:18
阴阳神万物主 发表于 2020-1-23 21:51
我来康康能否承受住这道题目。
解答错误
输入:
输出:11
预期结果:6(循环节为 )
阴阳神万物主
发表于 2020-1-23 22:15:18
本帖最后由 阴阳神万物主 于 2020-1-23 22:20 编辑
zltzlt 发表于 2020-1-23 21:53
解答错误
输入:
唉~又增加了一个耗时间的环节。
def solve(lst:'list of int >= 0',debug=False)->list:
if lst:
loop = lst[:1]
for i in range(len(lst)-1):
l = len(loop)
if lst != loop or lst != loop[(i+1)%l]:
if lst == loop:
a = loop[:]
b = lst
d = (len(b)-len(a))//2
a += b[:d]
b = b
#print('调试',a,b)
if a == b:
loop = a
continue
loop = lst[:i+1] if lst == loop else lst[:i+2]
if debug:
print('调试',loop)
return len(loop)
else:
return 0
if __name__ == '__main__':
print('示例1 输出:',solve())
print('示例2 输出:',solve())
print('示例3 输出:',solve())
print('别人错的12#',solve())
print('别人错的11#',solve())
print('之前错的23#',solve())
优化后:
def solve(lst:'list of int >= 0',debug=False)->list:
if lst:
loop = 1
for i in range(1,len(lst)-1):
if lst != lst or lst != lst[(i+1)%loop]:
if lst == lst:
r = loop+i
l = r//2
if lst[:l]==lst:
loop = l
continue
loop = i+1 if lst == lst else i+2
if debug:
print('调试',loop)
return loop
else:
return 0
if __name__ == '__main__':
print('示例1 输出:',solve())
print('示例2 输出:',solve())
print('示例3 输出:',solve())
print('别人错的12#',solve())
print('别人错的11#',solve())
print('之前错的23#',solve())
zltzlt
发表于 2020-1-23 22:22:32
阴阳神万物主 发表于 2020-1-23 22:15
唉~又增加了一个耗时间的环节。
优化后:
{:10_256:}通过了
阴阳神万物主
发表于 2020-1-23 22:43:37
zltzlt 发表于 2020-1-23 22:22
通过了
欧耶!(手舞足蹈状)
Jetty
发表于 2020-1-23 23:14:49
def array_diff(arr1, arr2):
for i in range(len(arr2)):
if arr1 != arr2:
return False
return True
def arr_proc(lst):
if len(lst) < 2: return lst
find_index = lst.index(lst, len(set(lst)))
loop_arr = []
is_loop = True
while len(loop_arr) < len(lst) and is_loop:
if lst in lst:
loop_arr = lst[:lst.index(lst, find_index)]
else:
loop_arr = lst
arr_len = len(loop_arr)
for i in range(arr_len, len(lst)):
tmp_arr = lst
if not array_diff(loop_arr, tmp_arr):
find_index += 1
break
if i + len(tmp_arr) == len(lst):
is_loop = False
return loop_arr
print arr_proc()
新手挑战一下。。。
zltzlt
发表于 2020-1-24 13:03:11
Jetty 发表于 2020-1-23 23:14
新手挑战一下。。。
解答错误
输入:
输出:
预期结果:2
TJBEST
发表于 2020-1-24 14:06:19
本帖最后由 TJBEST 于 2020-1-24 14:51 编辑
事情真多,晚上再发吧
Croper
发表于 2020-1-24 16:40:54
阴阳神万物主 发表于 2020-1-23 22:15
唉~又增加了一个耗时间的环节。
优化后:
讲道理,这个解法不对吧,不用kmp我是没看出有什么好方法的
试试用例,预期结果应该是7,循环节。
Stubborn
发表于 2020-1-24 17:09:58
本帖最后由 Stubborn 于 2020-1-24 17:19 编辑
def func303(arr):
k = ,]
ki = 0
idx = 0
while True:
for i in k:
if idx >= len(arr):
return len(k)
if arr == i:
idx += 1
else:
if ki:
k = k * ki
k.append(arr)
idx = len(k)
ki = 0
break
else:
k.append(arr)
idx += 1
break
ki += 1
TJBEST
发表于 2020-1-24 17:37:02
可能速度有些慢,楼主写的那个4003周期的东西 我速度2s左右 不过数对了也是不错的
def fun313(arr):
def check():
M = len(checkList)
state = True
div = N//M
res = N%M
for i in range(0,div):
if arr[(i*M):((i+1)*M)]!= checkList:
state = False
break
if state == False:
return False
else:
if res == 0 or arr[(N-res):N]== checkList:
return True
else:
return False
N = len(arr)
if N < 2:
return N
checkList = ]
state = True
for each inarr:
if each!= arr:
state = False
break
if state == True:
return 1
for each in arr:
if each == arr:
checkList.append(each)
else:
break
M = len(checkList)
for each in arr:
if each != arr:
checkList.append(each)
else:
if check():
break
else:
checkList.append(each)
return len(checkList)
TJBEST
发表于 2020-1-24 17:46:48
Croper 发表于 2020-1-24 16:43
结果:
你是正确的,我算的也是7
TJBEST
发表于 2020-1-24 22:36:44
楼主有时间测测我这个吧
zltzlt
发表于 2020-1-24 22:37:38
TJBEST 发表于 2020-1-24 22:36
楼主有时间测测我这个吧
抱歉,现在测不了,得等到明天
阴阳神万物主
发表于 2020-1-25 01:50:01
Croper 发表于 2020-1-24 16:40
讲道理,这个解法不对吧,不用kmp我是没看出有什么好方法的
试试用例,预期结果 ...
你是对的,但是好像测试数据里面没有这种的。
zltzlt
发表于 2020-1-25 10:22:03
Croper 发表于 2020-1-24 16:43
结果:
输入 会报错,帮你改了,最终用时 254 ms
zltzlt
发表于 2020-1-25 10:57:49
Stubborn 发表于 2020-1-24 17:09
输入大数据超时
zltzlt
发表于 2020-1-25 10:58:31
TJBEST 发表于 2020-1-24 17:37
可能速度有些慢,楼主写的那个4003周期的东西 我速度2s左右 不过数对了也是不错的
确实有点慢,不过勉强通过了,用时 3431 ms