Leetcode_Python 396 旋转函数

简介: 解题思路当本题的len(A)<=1时候,结果一定为零。

解题思路

  • 当本题的len(A)<=1时候,结果一定为零。
  • len(A)>1时,我们可以得到递推公式即F(k)=F(k-1)+len(A)*A[len(A)-k]+sum(A)
  • 其中最大的值,即为所求。

代码

class Solution(object):
    def maxRotateFunction(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        long = len(A)
        sum_1 = sum(A)
        print(sum_1)
        if long <= 1:
            return 0
        for i in range(long):
            sums = 0
            if i == 0:  #计算没有滑动的F(0)
                memeory = sum([ A[j] * j for j in range(long)])
                maxs = memeory
            else:
                sums = sum_1 - long * A[long-i] + memeory
                maxs = max(sums,maxs)
                memeory = sums
        return max(maxs,memeory)

另一种方法,时间复杂度有点高,好理解。

class Solution(object):
    def maxRotateFunction(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        i = 0
        list1 = []
        if A == []:
            return 0
        while i < len(A):
            sums = 0
            for j in range(len(A)):
                sums += j * A[j]
            list1.append(sums)
            A.insert(0,A.pop())
            i += 1
        return max(list1)
相关文章
|
2月前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
76 0
|
18天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
123 67
|
20天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
102 63
|
12天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
38 18
|
3天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
30 8
|
13天前
|
Python
Python中的函数
Python中的函数
29 8
|
20天前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
27天前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
40 5
|
2月前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
2月前
|
存储 数据安全/隐私保护 索引