加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[Swift]LeetCode798. 得分最高的最小轮调 | Smallest Rotation w

发布时间:2020-12-14 05:01:43 所属栏目:百科 来源:网络整理
导读:?Given an array? A ,we may rotate it by a non-negative integer? K ?so that the array becomes? A[K],A[K+1],A{K+2],... A[A.length - 1],A[0],A[1],...,A[K-1] .? Afterward,any entries that are less than or equal to their index are worth 1 point

?Given an array?A,we may rotate it by a non-negative integer?K?so that the array becomes?A[K],A[K+1],A{K+2],... A[A.length - 1],A[0],A[1],...,A[K-1].? Afterward,any entries that are less than or equal to their index are worth 1 point.?

For example,if we have?[2,4,1,3,0],and we rotate by?K = 2,it becomes?[1,2,4].? This is worth 3 points because 1 > 0 [no points],3 > 1 [no points],0 <= 2 [one point],2 <= 3 [one point],4 <= 4 [one point].

Over all possible rotations,return the rotation index K that corresponds to the highest score we could receive.? If there are multiple answers,return the smallest such index K.

Example 1:
Input: [2,0]
Output: 3
Explanation:  
Scores for each K are listed below: 
K = 0,A = [2,0],score 2
K = 1,A = [3,2],score 3
K = 2,A = [1,3],score 3
K = 3,A = [4,1],score 4
K = 4,A = [0,4],score 3

So we should choose K = 3,which has the highest score.?

Example 2:
Input: [1,4]
Output: 0
Explanation:  A will always have 3 points no matter how it shifts.
So we will choose the smallest K,which is 0.

Note:

  • A?will have?length at most?20000.
  • A[i]?will be in the range?[0,A.length].

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

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

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

示例 1:
输入:[2,0]
输出:3
解释:
下面列出了每个 K 的得分:
K = 0,score 3
所以我们应当选择?K = 3,得分最高。?
示例 2:
输入:[1,4]
输出:0
解释:
A 无论怎么变化总是有 3 分。
所以我们将选择最小的 K,即 0。

提示:

  • A?的长度最大为?20000
  • A[i]?的取值范围是?[0,A.length]

Runtime:?196 ms
Memory Usage:?18.9 MB
 1 class Solution {
 2     func bestRotation(_ A: [Int]) -> Int {
 3         var n:Int = A.count
 4         var res:Int = 0
 5         var change:[Int] = [Int](repeating:0,count:n)
 6         for i in 0..<n
 7         {
 8             change[(i - A[i] + 1 + n) % n] -= 1
 9         }
10         for i in 1..<n
11         {
12             change[i] += change[i - 1] + 1
13             res = (change[i] > change[res]) ? i : res
14         }
15         return res
16     }
17 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读