美文网首页
浏览更多/最多的文章数

浏览更多/最多的文章数

作者: 不分享的知识毫无意义 | 来源:发表于2021-02-15 17:46 被阅读0次

题目

某位用户连续一周登录简书浏览文章,假设他一周浏览文章的天数为一个list,记录为[5,10,2,4,5,3,15]。求解以下两个问题:
(1)该用户在登录几天后可以浏览比当天数量更多的文章数
以第3天为例,他当天浏览了2篇文章,在第4天浏览了4篇文章,那么此时的值应该为1
答案应该是:[1, 5, 1, 1, 2, 1, 0]
(2)该用户在登录几天后可以浏览最多的文章数
以第3天为例,他当天浏览了2篇文章,在第7天浏览了4篇文章,那么此时的值应该为4
答案应该是:[6, 5, 4, 3, 2, 1, 0]

解法

暴力求解

暴力是求解一切算法最好用的方法,这道题暴力求解很容易,直接两层循环解决


#题目1
def nextGreaterElements(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    nums_length = len(nums)
    res_list = [0 for _ in range(nums_length)]
    res_index = [0 for _ in range(nums_length)]
    for i in range(nums_length):
        for j in range(i+1,nums_length):
            if nums[i] < nums[j]:
                res_list[i] = nums[j]
                res_index[i] = j-i
                break
    return res_list,res_index
print(nextGreaterElements([5,10,2,4,5,3,15])[1])

#题目2
def nextGreaterElements(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    nums_length = len(nums)
    res_list = [0 for _ in range(nums_length)]
    res_index = [0 for _ in range(nums_length)]
    for i in range(nums_length):
        for j in range(i+1,nums_length):
            if nums[i] < nums[j]:
                res_list[i] = nums[j]
                res_index[i] = j - i
    return res_list,res_index
print(nextGreaterElements([5,10,2,4,5,3,15])[1])

栈求解

栈求解的好处是只用遍历一遍
关于题目1:因为是求解下一个更长时间,所以预先需要设置一个栈存储之后元素,然后通过while不断弹出,而弹出的位置应该从头开始
关于题目2:因为求解最长的时间,因此需要不断的append最大值

#题目1
def nextGreaterElements(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    nums_length = len(nums)
    res_list = [0 for _ in range(nums_length)]
    res_index = [0 for _ in range(nums_length)]
    for i in range(nums_length):
        print(i)
        stack = list(range(i+1,nums_length))
        print(stack)
        while stack and nums[i]>nums[stack[0]]:
            stack.pop(0)
        res_list[i] = nums[stack[0]] if stack else 0
        res_index[i] = stack[0]-i if stack else 0
    return res_list,res_index
print(nextGreaterElements([5,10,2,4,5,3,15])[1])

#题目2
def nextGreaterElements(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    nums_length = len(nums)
    res_list = [0 for _ in range(nums_length)]
    res_index = [0 for _ in range(nums_length)]
    for i in range(nums_length-2,-1,-1):
        stack = list(range(i+1,nums_length))
        print(i)
        while (nums[i]>nums[stack[-1]]):
            stack.append(i)
        print(stack)
        res_list[i] = nums[stack[-1]]
        res_index[i] = stack[-1]-i
    return res_list,res_index
print(nextGreaterElements([5,10,2,4,5,3,15])[1])

相关文章

  • 浏览更多/最多的文章数

    题目 解法 暴力求解 暴力是求解一切算法最好用的方法,这道题暴力求解很容易,直接两层循环解决 栈求解 栈求解的好处...

  • 发布文章后,该不该时不时的去看浏览量

    我发布了12篇文章,浏览量少得可怜,来了简书一个多星期吧,到现在最多的浏览量才59,现在还有浏览量为零的,点赞数更...

  • 为什么你读了那么多干货却还是优秀不起来

    虽然来简书时间不长,也写了几篇文章,从写的文章被浏览的次数来看,只要写干货之类的总会被浏览最多,收藏最多。在首页上...

  • Laravel实现文章浏览数的统计

    本文主要基于Laravel5.3下,如何记录显示网页文章浏览数 插件 weboap/visitor借阅 Larav...

  • 你的浏览是我的荣幸

    加入简书第九天,日更了八天,每天都会好几次打开简书,看看自己的文章浏览数有没有上涨。每次看到文章浏览数有上涨,自信...

  • 小鹿竞价:《竞价员7宗最》你中了几招?

    第一、装浏览器最多 大部分竞价要管理的多个账户,猎豹、Google、火狐、百度、遨游基本标配5个浏览器。甚至更多。...

  • Mysql,文章表设计

    一篇文章它自身的属性包括,文章标题,内容,作者,创建时间,主题图片等,还有一些属性包括评论数、浏览数等等。 参考文章

  • 【实用】IE浏览器兼容性适配点总结

    在web项目进行浏览器兼容性测试(了解更多请戳:「秘籍」软件测试进阶学习指南!),论坑最多的,非IE系列浏览器莫属...

  • 1800日记(35)我心焦虑

    我已经写了十三万字了。最多人浏览的文章也不过才一百多的浏览量。只有一篇文章被专题推荐上首页。我发表了多少篇文章,就...

  • 瞬间爱上jianshu

    经同事推荐jianshu 浏览了数小时后,发现很多有趣的文章。。。 然后就。。。。

网友评论

      本文标题:浏览更多/最多的文章数

      本文链接:https://www.haomeiwen.com/subject/zvnpxltx.html