798. 得分最高的最小轮调

给定一个数组 A,我们可以将它按一个非负整数 K 进行轮调,这样可以使数组变为 A[K], A[K+1], A{K+2], … A[A.length - 1], A[0], A[1], …, A[K-1] 的形式。此后,任何值小于或等于其索引的项都可以记作一分。

例如,如果数组为 [2, 4, 1, 3, 0],我们按 K = 2 进行轮调后,它将变成 [1, 3, 0, 2, 4]。这将记作 3 分,因为 1 > 0 [no points], 3 > 1 [no points], 0 <= 2 [one point], 2 <= 3 [one point], 4 <= 4 [one point]。

在所有可能的轮调中,返回我们所能得到的最高分数对应的轮调索引 K。如果有多个答案,返回满足条件的最小的索引 K。

示例 1:

输入:[2, 3, 1, 4, 0]

输出:3

解释:

下面列出了每个 K 的得分:

K = 0, A = [2,3,1,4,0], score 2

K = 1, A = [3,1,4,0,2], score 3

K = 2, A = [1,4,0,2,3], score 3

K = 3, A = [4,0,2,3,1], score 4

K = 4, A = [0,2,3,1,4], score 3

所以我们应当选择 K = 3,得分最高。

示例 2:

输入:[1, 3, 0, 2, 4]

输出:0

解释:

A 无论怎么变化总是有 3 分。

所以我们将选择最小的 K,即 0。

提示:

A 的长度最大为 20000。

A[i] 的取值范围是 [0, A.length]。

class Solution {
public int bestRotation(int[] A) {
int N = A.length;
int[] bad = new int[N];
for (int i = 0; i < N; ++i) {
//把这里换成差分的形式
//对于A【i】小于等于i是加分的
//那么 i - A[i] + 1 和 i之间是没有分的
//这样就可以转换成left位置没分,right有分
int left = (i - A[i] + 1 + N) % N;
int right = (i + 1) % N;
bad[left]--;
bad[right]++;
} int best = -N;
int ans = 0, cur = 0;
for (int i = 0; i < N; ++i) {
cur += bad[i];
if (cur > best) {
best = cur;
ans = i;
}
}
return ans;
} }

Java实现 LeetCode 798 得分最高的最小轮调 (暴力分析)的更多相关文章

  1. [差分数组] LeetCode789 得分最高的最小轮调

    LeetCode 得分最高的最小轮调 今天当然CV了因为今天比较忙,所以直接走算法,因为什么都不做的话并不符合社会主义核心价值观,今天小学一手查分数组. 题目:并不存在CV了还写什么题解 算法背景: ...

  2. [Swift]LeetCode798. 得分最高的最小轮调 | Smallest Rotation with Highest Score

    Given an array A, we may rotate it by a non-negative integer K so that the array becomes A[K], A[K+1 ...

  3. Java实现 LeetCode 786 第 K 个最小的素数分数(大小堆)

    786. 第 K 个最小的素数分数 一个已排序好的表 A,其包含 1 和其他一些素数. 当列表中的每一个 p<q 时,我们可以构造一个分数 p/q . 那么第 k 个最小的分数是多少呢? 以整数 ...

  4. Java实现 LeetCode 830 较大分组的位置(暴力模拟)

    830. 较大分组的位置 在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组. 例如,在字符串 S = "abbxxxxzyy" 中,就含有 "a ...

  5. Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)

    804. 唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", " ...

  6. Java实现 LeetCode 771 宝石与石头(这是真暴力)

    771. 宝石与石头 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 ...

  7. Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)

    765. 情侣牵手 N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手. 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起. 一次交换可选择任意两人,让他们站起来交换座位. 人和座位用 0 ...

  8. Java实现 LeetCode 748 最短完整词(字母拆分+暴力)

    748. 最短完整词 如果单词列表(words)中的一个单词包含牌照(licensePlate)中所有的字母,那么我们称之为完整词.在所有完整词中,最短的单词我们称之为最短完整词. 单词在匹配牌照中的 ...

  9. Java实现 LeetCode 724 寻找数组的中心索引(暴力)

    724. 寻找数组的中心索引 给定一个整数类型的数组 nums,请编写一个能够返回数组"中心索引"的方法. 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧 ...

随机推荐

  1. LeetCode--Array--Remove Duplicates from Sorted Array (Easy)

    26. Remove Duplicates from Sorted Array (Easy) Given a sorted array nums, remove the duplicates in-p ...

  2. 局域网ip地址扫描_v1版本

    局域网ip地址扫描 工作中,我们有时需要对局域网中ip地址使用情况进行统计.可以使用shell脚本进行扫. 脚本功能: 在线使用IP写入list_online.txt文件 未在线IP写入list_of ...

  3. [hdu4498]离散化,simpson求积分

    题意:,求这个函数在[0,100]上的图像的长度. 思路:采用离散化的思想,求出所有交点 ,把交点排序,把[0,100]分成若干个小区间,这样原函数在每个小区间上的图像属于某一个二次函数或者是一条直线 ...

  4. wpf winform 截图

    wpf 通过下面的截图,标题可能会丢失. public void CreateBitmapFromVisual(Window win, string fileName)        {        ...

  5. 聚类算法——DBSCAN算法原理及公式

    聚类的定义 聚类就是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小.聚类算法是无监督的算法. 常见的相似度计算方法 闵可夫斯基距离M ...

  6. MySQL执行外部sql脚本文件命令是报错:unknown command

    使用source导入外部sql文件: mysql> source F:\php\bookorama.sql; -------------- source F: -------------- ER ...

  7. BATJ解决千万级别数据之MySQL 的 SQL 优化大总结

    引用 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提高程序性能,还能减低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL 逻 ...

  8. poj1699 KMP+壮压DP

    Best Sequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6338   Accepted: 2461 Des ...

  9. CF838A

    题目链接:http://codeforces.com/contest/838/problem/A 知识点: (void) 题目大意: 给一个 \(n \times m\) 的 01 矩阵,对于矩阵在 ...

  10. 系统对 Device Tree Overlays 的支持方式

    问题来源: 野火 iMX 6ULL 开发板资料. https://tutorial.linux.doc.embedfire.com/zh_CN/latest/linux_basis/fire-conf ...