zltzlt 发表于 2020-4-14 17:54:50

l0stparadise 发表于 2020-4-13 20:53


解答错误

输入:
输出:3
预期结果:2

zltzlt 发表于 2020-4-14 17:55:33

NAMELESSONE 发表于 2020-4-14 09:26


117 ms

zltzlt 发表于 2020-4-14 17:56:02

lucky邪神 发表于 2020-4-14 11:17
不知道,我理解的对不对,分块,排序,重新组合后与原数组一样

解答错误

输入:
输出:2
预期结果:1

zltzlt 发表于 2020-4-14 17:57:22

sunrise085 发表于 2020-4-14 13:57
修改好了,其实也就是把0在最开始的情况给漏掉了。求大佬看看运行效率

解答错误

输入:
输出:0
预期结果:1

zltzlt 发表于 2020-4-14 17:59:53

旅途Z 发表于 2020-4-14 14:31


解答错误

输入:
输出:2
预期结果:1

zltzlt 发表于 2020-4-14 18:01:30

sunrise085 发表于 2020-4-14 13:57
修改好了,其实也就是把0在最开始的情况给漏掉了。求大佬看看运行效率

不可能分成 0 份

zltzlt 发表于 2020-4-14 18:02:41

阴阳神万物主 发表于 2020-4-14 14:39
这个修好了。

输入以下数据超时:

sunrise085 发表于 2020-4-14 20:18:04

zltzlt 发表于 2020-4-14 18:01
不可能分成 0 份

呃,之前对题目理解有偏差。。。。以为会有无法分的情况,就让函数返回0了。
这次可能就没问题了吧。
有问题也不再改了,有问题说明我对这道题的理解还是有偏差。
另外你发的那个txt中的列表,结果是1吗?
我用我的程序试了一下,结果是1
def fun374(list1):
    l=len(list1)-1
    result=1
    t=list1.index(0)
    while t<l:
      if t!=0:
            while max(list1[:t])>t:
                t=max(list1[:t])
      if t==l:
            break
      result+=1
      t=list1.index(t+1)
    return result

阴阳神万物主 发表于 2020-4-14 20:20:03

zltzlt 发表于 2020-4-14 18:02
输入以下数据超时:

时间节约,完成!!!
def solve(arr:list,which:bool=False)->int:
    how = []
    l = len(arr)
    m = 0
    for i in range(l):
      m = max(m,arr)
      if m == i:how.append(i+1)
    res = len(how)
    if which:
      how.insert(0,0)
      for i in range(1,res):print(arr:how],end=',')
      else:print(arr:])
    return res

if __name__ == '__main__':
    print('示例1 输出:',solve())
    print('示例2 输出:',solve(,1))
    print('之前错的:',solve(,1))

这个测试数据结果是 1
用时尺度是我感知不到的。我的感知是一瞬间就出结果了。

岚冰1234 发表于 2020-4-15 10:46:02

本帖最后由 岚冰1234 于 2020-4-15 10:48 编辑

import math
import copy
def splice_lst(lst,num):
    #列表里包含列表时,将其展开,
    def deep(lst):
      result = []
      for each in lst:
            if type(each) == list:
                #如果元素是列表,将其排序
                each.sort()
                result.extend(deep(each))
            else:
                result.append(each)
      return result
    #分块
    def chunk(lst,num):
      num = int(num)
      size = math.ceil(len(lst)/num)
      L = list(range(0,size))
      def ch(x):
            lst1 = lst
            return lst1
      lst2 =list(map(ch, L))
      #深拷贝,实现讲分片的方式展示出来
      lst3 = copy.deepcopy(lst2)
      result = deep(lst2)
      print('数组分成',num,'元素一组:',lst3,',其输出结果是:',result)
    for each in range(1,num+1):
            chunk(lst,each)
a=
print(splice_lst(a,4))


输出结果
数组分成 1 元素一组: [, , , , ] ,其输出结果是:
数组分成 2 元素一组: [, , ] ,其输出结果是:
数组分成 3 元素一组: [, ] ,其输出结果是:
数组分成 4 元素一组: [, ] ,其输出结果是:

zltzlt 发表于 2020-4-15 13:20:14

sunrise085 发表于 2020-4-14 20:18
呃,之前对题目理解有偏差。。。。以为会有无法分的情况,就让函数返回0了。
这次可能就没问题了吧。
...

是的,结果是 1

zltzlt 发表于 2020-4-15 13:20:52

sunrise085 发表于 2020-4-14 20:18
呃,之前对题目理解有偏差。。。。以为会有无法分的情况,就让函数返回0了。
这次可能就没问题了吧。
...

解答错误

输入:
输出:2
预期结果:1

zltzlt 发表于 2020-4-15 13:21:30

阴阳神万物主 发表于 2020-4-14 20:20
时间节约,完成!!!

这个测试数据结果是 1


88 ms

zltzlt 发表于 2020-4-15 13:21:43

岚冰1234 发表于 2020-4-15 10:46
输出结果
数组分成 1 元素一组: [, , , , ] ,其输出结果是:
数 ...

貌似来晚了呢

zltzlt 发表于 2020-4-15 13:23:08

旅途Z 发表于 2020-4-14 14:31
已修改 Orz

83 ms

sunrise085 发表于 2020-4-15 14:55:26

zltzlt 发表于 2020-4-15 13:20
解答错误

输入:


呃,好吧。序列是从0开始的,max那里应该是t+1而不应该是t

zltzlt 发表于 2020-4-15 17:24:55

sunrise085 发表于 2020-4-15 14:55
呃,好吧。序列是从0开始的,max那里应该是t+1而不应该是t

输入 有错……

sunrise085 发表于 2020-4-15 17:29:55

zltzlt 发表于 2020-4-15 17:24
输入 有错……

没错呀?
def fun374(list1):
    l=len(list1)-1
    result=1
    t=list1.index(0)
    while t<l:
      if t!=0:
            while max(list1[:t+1])>t:
                t=max(list1[:t+1])
      if t==l:
            break
      result+=1
      t=list1.index(t+1)
    return result
print(fun374())

zltzlt 发表于 2020-4-15 17:36:26

sunrise085 发表于 2020-4-15 17:29
没错呀?

噢,搞错了,88 ms

lucky邪神 发表于 2020-4-18 21:50:23

zltzlt 发表于 2020-4-14 17:56
解答错误

输入:


将这个数组分割成几个 “块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同

请问对题目重新理解是否正确:
1、按升序排序后的原数组相同指的是
2、分成的块进行排序,这个是指可以将块根据需要排序
3、块中的元素也进行排序(升序)
页: 1 2 [3] 4
查看完整版本: Python:每日一题 374