[Leetcode每日一题]396. 旋转函数

Leetcode每日一题396. 旋转函数 阅读详情

题目

给定一个长度为 n 的整数数组 nums 。

假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为:

F(k) = 0 * arrk[0] + 1 * arrk[1] + … + (n - 1) * arrk[n - 1]
返回 F(0), F(1), …, F(n-1)中的最大值 。

生成的测试用例让答案符合 32 位 整数。

示例 1:
输入: nums = [4,3,2,6]
输出: 26
解释:
F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) = 0 + 2 + 12 + 12 = 26
所以 F(0), F(1), F(2), F(3) 中的最大值是 F(3) = 26 。

示例 2:
输入: nums = [100]
输出: 0

提示:
n == nums.length
1 <= n <= 105
-100 <= nums[i] <= 100

代码

package dayLeetCode;

public class dayleetcode396 {
    /**
     *
     * 数学公式 经典的数学问题,看到前后两项仅在常数上发生变化,则能通过计算找到前两者的关系
     * F(0) = 0 * nums[0] + 1 * nums[1] + ... + (n - 1) * nums[n - 1]
     * F(1) = 1 * nums[0] + 2 * nums[1] + ... + (n - 1) * nums[n - 2] + 0 * nums[n - 1]
     *      = (nums[0] + nums[1] + ... + nums[n-1] - nums[n-1]) + (0 * nums[0] + 1 * nums[1] + ... +(n - 1) * nums[n -1]) -(n -1)*nums[n-1]
     *      = sum + F(0) - n * nums[n-1]  其中sum为数组nums的元素之和
     * F(2) = 2 * nums[0] + ... + 0*nums[n-2] + 1*nums[n-1]
     *      = sum + F(1) - n * nums[n-2]
     *
     * 所以F(t) = f(t-1)+ sum - n*nums[n-t]
     * @param nums
     * @return
     */
    public int maxRotateFunction(int[] nums) {
        int sum = 0;
        for (int n : nums){
            sum += n;
        }
        int[] dp = new int[nums.length];
        for (int i = 0; i < nums.length; i++){
            dp[0] += (i * nums[i]);
        }

        int ans = dp[0];
        for (int i = 1; i < nums.length; i++){
            dp[i] = dp[i - 1] + sum - nums.length * nums[nums.length - i];
            ans = Math.max(dp[i], ans);
        }
        return ans;
    }

    public static void main(String[] args) {
        dayleetcode396 obj = new dayleetcode396();
        int[] nums = {4, 3, 2, 6};
        System.out.println(obj.maxRotateFunction(nums));
    }
}

新手必看:如何用T265和ROS实现无人机室内精准定位(附PX4参数配置) 本文详细介绍了如何使用Intel Realsense T265和ROS实现无人机室内精准定位,包括硬件准备、ROS数据流架构设计、PX4参数配置及系统验证。特别针对视觉SLAM技术在室内环境中的应用,提供了从零搭建到进阶优化的全流程解析,适合无人机开发新手快速上手。 阅读详情

相关推荐

三菱CNC数据采集实战:从环境搭建到代码实现的完整指南

本文提供了一份完整的三菱CNC数据采集实战指南,涵盖从开发环境搭建、核心SDK获取、网络配置到基于C#和A2协议的完整代码实现。文章详细解析了初始化、连接管理、数据获取与展示四大核心模块,并分享了错误处理、性能优化及与MES系统集成的关键技巧,帮助工程师快速构建稳定可靠的工业数据采集系统。

wood5的博客 888

【力扣每日一题】396.旋转函数

题目描述 给定一个长度为 n 的整数数组 nums 。 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为: F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1] 返回 F(0), F(1), …, F(n-1)中的最大值 。 生成的测试用例让答案符合 32 位 整数。 示例 1: 输入: nums = [4,3,2,6] 输出: 26 解释: F(0) = (0 * 4)

a534563的博客 289

从零开始开发AI Agent:基于大模型的智能体实战指南

### 摘要 本文介绍了AI Agent的开发全流程,从基础概念到实际部署,涵盖大模型集成、工具调用和记忆系统构建等核心技术。通过电商客服案例展示实战应用,并提供调试优化与部署方案,最后展望了AI Agent的未来发展方向,帮助开发者快速掌握智能体开发技能。

ghs_gss的博客 4860

LeetCode每日一题——396. 旋转函数

目录题目示例思路题解二、动态规划 题目 给定一个长度为 n 的整数数组 nums 。 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为: F(k) = 0 * arrk[0] + 1 * arrk[1] + … + (n - 1) * arrk[n - 1] 返回 F(0), F(1), …, F(n-1)中的最大值 。 生成的测试用例让答案符合 32 位 整数。 示例 示例 1: 输入: nums = [4,3,2,6] 输出: 26 解释:

hyk的博客 542

Xilinx Blockset Counter计数器模块使用及参数配置

本文详细介绍了Simulink中Xilinx Blockset库Counter模块的使用以及参数说明。

白码王子小张的博客 1094

服务器能效测试工具BenchSEE使用方法简介

BenchSEE是由中国标准化研究院开发的一款针对服务器产品能效测试的基准软件。BenchSEE基准的设计参考了全球众多服务器厂家、芯片厂家、能效认证机构和IT节能领域科研机构的意见,旨在满足服务器市场应用对能效测评的需求。BenchSEE基准负载工具支持的服务器类型包括:机架服务器、刀片服务器多节点服务器和机柜服务器等,服务器可以配的最大外理器个数包括:1P,2P和4P等。测试基准涵盖服务器关键部件:CPU,内存和存储介质三大基础部件。

MQWYY3的博客 4216

LeetCode 每日一题(4.22)396.旋转函数

LeetCode 每日一题(4.22)396.旋转函数

JIANGhanha的博客 384

论文阅读:arxiv 2023 EduChat: A Large-Scale Language Model-based Chatbot System for Intelligent Education

EduChat是一个基于大规模语言模型(LLM)的教育领域聊天机器人系统,旨在为教师、学生和家长提供个性化、公平且富有同理心的智能教育服务。该系统通过在教育语料库上进行预训练和特定任务微调,强化了开放式问答、作文评估、苏格拉底式教学和情感支持等教育功能。为解决领域知识不足和知识更新问题,EduChat采用了检索增强技术,并融入心理学和教育学理论。该项目已开源,提供代码、数据和模型参数,推动LLM在智能教育中的应用发展。

CSPhD-winston的博客 1039

每日一题-LeetCode396-旋转函数-递推

原题链接 Note: 官方题解挺好看懂的 列出来 f0 和 f1 就看出来递推关系了,然后代码实现一下即可 代码如下: class Solution { public: int maxRotateFunction(vector<int>& nums) { int f = 0, sum = 0; for(int i = 0; i < nums.size(); i ++) sum += nums[i];

Mr_Ghost812的博客 447

博途S7-1500T 使用工艺对象驱动液压轴(含SimaHydTO库)

利用工艺对象控制液压轴位置含PLC控制和仿真程序文档资料下载地址如下:液压比例伺服阀的相关应用知识请参看下面的博客文章:液压位置闭环控制(比例伺服阀应用)_RXXW_Dor的博客-优快云博客。

RXXW_Dor的博客 2896

lammps案例:热导率模拟案例讲解(NEMD方法)

lammps计算热导率大体可以分为三种方法:EMD、NEMD、rNEMD。 本文介绍非平衡模拟(NEMD)热导率的计算方法。 NEMD下热导率计算公式为: k=dQ*dZ/dt k:热导率 dQ:能量通量。 dT/dZ:温度梯度。 非平衡态下计算热导率的原理是在材料的两端或者中间设置热源和冷源。 在热源输入热量,在冷源抽取等量的热量,在这个过程中计算材料内部会有热量的传递,产生温度梯度。 在lammps模拟中得到能量通量和温度梯度,代入公式即可求得热导率。 热量的输入方式有多种,如fix langevin

lammps_jiayou的博客 1万+

js力扣每日一题(2022/4/22)---396.旋转函数

leetcode---396.旋转函数 给定一个长度为 n 的整数数组 nums 。 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为: F(k) = 0 * arrk[0] + 1 * arrk[1] + … + (n - 1) * arrk[n - 1] 返回 F(0), F(1), …, F(n-1)中的最大值 。 生成的测试用例让答案符合 32 位 整数。 示例一: 输入: nums = [4,3,2,6] 输出: 26 解释: F(0)

前端小白在前进的博客 535

Apollo Planning2.0决策规划算法代码详细解析 (1):环境搭建

1、官方提供连接:git clone https://github.com/ApolloAuto/application-pnc.git。此外,也更新了dreamview对pnc的支持,使得调试更加方便。apollo开源团队近期更新了planning版本,对代码进行了一定程度上的重构。(2)进入docker,并编译整个工程:./apollo.sh build_dbg。下载项目环境后使用aem进行环境配置;2、有一定基础建议直接拉取最新代码,自己手动进行编译。(1)环境安装: ./dev_start.sh。

自动驾驶Player的博客 1839

LeetCode每日一题刷题记录396.旋转函数

看完题目第一想法是写一个函数用以计算f(i),然后迭代地去计算每一个f(i),ans用以记录最大值,最后返回即可,但是这样的做法时间复杂度为O(n^2),导致“一顿操作猛如虎,一看击败百分五”,然后我便毫不犹豫地点开了官方题解,果然官方不会像我一样傻,其思路是推导f(i)与f(i - 1)的关系,并利用这样的关系去计算后面的f(n), 这样得到的算法时间复杂度就为O(n),按着官方的思路,我自己去推导了这个关系式,提交过后果然好多了。 class Solution { int len;

qq_51404307的博客 759

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2022/04/121 leetcode 每日一题 396. 旋转函数

1.题目 2.求解 每次循环的时候加上sum(nums)减去nums[-1] * length即是循环数组后得到的结果。 需要注意的是,得到的最大值可能是负值,因此初始化ans=-sys.maxsize。 3.代码 class Solution: def maxRotateFunction(self, nums: List[int]) -> int: ans = -sys.maxsize cnt = 0 ...

blood_thirsty的博客 360

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JS解力扣每日一题(八)——396.旋转函数(2022-4-22)

文章目录题目我的答案 题目 给定一个长度为 n 的整数数组 nums 。 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为: F(k) = 0 * arrk[0] + 1 * arrk[1] + … + (n - 1) * arrk[n - 1] 返回 F(0), F(1), …, F(n-1)中的最大值 。 生成的测试用例让答案符合 32 位 整数。 示例1 输入: nums = [4,3,2,6] 输出: 26 解释: F(0) = (0

rjlmylover_zyw的博客 386

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LeetCode 396. 旋转函数

396. 旋转函数 题目来源:396. 旋转函数 2022.04.22 每日一题

小明不要写Bug的博客 217

旋转函数_yiduobo的每日leetcode 396.旋转函数

祖传的手艺不想丢了,所以按顺序写一个leetcode的题解。计划每日两题,争取不卡题吧396.旋转函数https://leetcode-cn.com/problems/rotate-function/找规律的题目。以样例说明:1、对于f[0],有f[0] = 0 * A[0] + 1 * A[1] + 2 * A[2] + 3 * A[3]2、对于f[1],有f[1] = 0 * A[3] + 1...

weixin_33454551的博客 156

A.每日一题:396. 旋转函数

A.每日一题:396. 旋转函数解析

要努力去发光,而不是被照亮~ 223

力扣396题:旋转数组(找规律)

将样写一遍,就能找到规律 // f[0]= 0*a + 1*b + 2*c + 3*d // f[1]=0*d + 1*a + 2*b + 3*c // f[2]=0*c + 1*d + 2*a + 3*b 转换一下: // f[0]= 0*a + 1*b + 2*c + 3*d // f[1]= 1*a + 2*b + 3*c + 0*d 规律:f[1]=f[0]+a+b+c+d-4*d // f[2]= 2*a + 3*b + 0*c + 1*d 规律:f[2]=f[1]+a+b+...

qx020814的博客 445

20220422力扣每日一题

问题描述 396. 旋转函数 给定一个长度为 n 的整数数组nums。 假设arrk是数组nums顺时针旋转 k 个位置后的数组,我们定义nums的 旋转函数F为: 返回F(0), F(1), ..., F(n-1)中的最大值。 生成的测试用例让答案符合32 位 整数。 示例 1: 输入: nums = [4,3,2,6] 输出: 26 解释: F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4...

m0_47148147的博客 241

LeetCode-396. 旋转数组(JavaScript)

LeetCode-396. 旋转数组(JavaScript) 给定一个长度为 n 的整数数组nums。 假设arrk是数组nums顺时针旋转 k 个位置后的数组,我们定义nums的 旋转函数F为: F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1] 返回F(0), F(1), ..., F(n-1)中的最大值。 生成的测试用例让答案符合32 位 整数。 来源:力扣(LeetCode) 链接:http...

m0_52575541的博客 308

LeetCode每日一题(396. Rotate Function)

代码】LeetCode每日一题(396.RotateFunction)

wangjun861205的博客 170

LeetCode每日一题:基于JavaScript(内含刷题顺序)持续更新中。。

LeetCode每日一题:基于JavaScript

m0_52575541的博客 1344

LeetCode探索(64):396-旋转函数

给定一个长度为 的整数数组 。假设 是数组 顺时针旋转 个位置后的数组,我们定义 的 旋转函数 为:返回 中的最大值 。生成的测试用例让答案符合 32 位 整数。示例 1: 示例 2: 提示:这是今日的每日一题,难度是中等。首先是看懂题意。对于给出是数组nums,的含义是对数组元素进行特定的操作,最后返回一个新的数值。旋转一次是将数组的最后一个元素放到操作的最前面。定义数组元素之和为sum。通过观察题目,不难得出以下规律: 那么我们可以一次迭代求出F(k),然后求出其中的最大值。 复杂度分析:

郊眠寺 1265

Java&C++题解与拓展——leetcode396.旋转函数【么的新知识】

leetcode396.旋转函数解题思路,用Java和C++两种语言分别编写,并对所使用类和方法进行学习记录。

菜鸡成长之路 695
上一篇: [Leetcode每日一题]824. 山羊拉丁文
下一篇: [Leetcode每日一题]190. 颠倒二进制位
Puppet__
博客等级 码龄10年 319粉丝 328原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值