文章目录

  • 算法一 双层循环
  • 算法二 差分数组

算法一 双层循环

时间复杂度:n^2
空间复杂度:n

int bestRotation(int* nums, int numsSize){char Differ_L[numsSize];int Temp;//临时存储首位int Temp_Score;//临时分数int Index;//当前最优kint Score;//当前最优k对应的分数//Differ_L初始化Index=0;Score=0;for(int i=0;i<numsSize;i++){nums[i]=i-nums[i];if(nums[i]>=0) Score++;}//迭代开始for(int i=1;i<numsSize;i++){Temp_Score=0;Temp=nums[0];//前numsSize-1数据计算for(int j=0;j<numsSize-1;j++){nums[j]=nums[j+1]-1;if(nums[j]>=0) Temp_Score++;}//第numsSize数据计算nums[numsSize-1]=Temp+numsSize-1;if(nums[numsSize-1]>=0) Temp_Score++;//最优判定if(Temp_Score>Score){Index=i;Score=Temp_Score;}return Index;}

算法二 差分数组

时间复杂度:n
空间复杂度:n

int bestRotation(int* nums, int numsSize){int ret=0;//差分数组初始化int Differ[numsSize];for(int i=0;i<numsSize;i++){Differ[i]=0;}//差分数组计算for(int i=0;i<numsSize;i++){if(i>=nums[i]){Differ[0]++;if(i-nums[i]+1<numsSize) Differ[i-nums[i]+1]--;if(i+1<numsSize) Differ[i+1]++;}else{Differ[i+1]++;if(numsSize-nums[i]+i+1<numsSize) Differ[numsSize-nums[i]+i+1]--;}}//前缀和for(int i=1;i<numsSize;i++){Differ[i]+=Differ[i-1];if(Differ[i]>Differ[ret]) ret=i;}return ret;
}

Leetcode题库 798.得分最高的最小轮调(差分数组 C实现)相关推荐

  1. 798.得分最高的最小轮调

    题目 798.得分最高的最小轮调 题目大意 给你一个数组 nums,我们可以将它按一个非负整数 k 进行轮调,这样可以使数组变为 [nums[k], nums[k + 1], ... nums[num ...

  2. 【LeetCode - 798】得分最高的最小轮调(转化法)

    解题报告: 思路一:这题首先说一个nlogn的方法. 首先一个主客转化,题目描述是说把数组做翻转,idx不变,然后nums[i]和i作比较.那么我们可以转化为让数组不变,idx转变,即:假设刚开始i= ...

  3. LeetCode题库第867题 转置矩阵

    LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...

  4. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  5. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  6. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

  7. LeetCode题库整理【Java】—— 3 无重复字符的最长子串

    LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  8. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  9. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

最新文章

  1. MVC3学习 四 EF删除操作
  2. 自动微分到底是什么?这里有一份自我简述
  3. numpy中的矩阵与数学上的矩阵的关系
  4. Asp.net MVC使用Model Binding解除Session, Cookie等依赖
  5. [Android Studio 权威教程]Windows下安装Android Studio
  6. 荣获中国音视频产业大会「科技创新奖」,网易云信彰显行业领先水平
  7. 论文浅尝 | 面向简单知识库问答的模式修正强化策略
  8. 【jackson 异常】com.fasterxml.jackson.databind.JsonMappingException异常处理
  9. 超大杯来了!一加10 Ultra将在第三季度登场:或搭载OPPO 自研影像芯片
  10. 用$.getJSON() 和$.post()获取第三方数据做页面 ——惠品折页面(1)
  11. MFC工作笔记0005---::在vc++中是什么意思
  12. 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第十讲 WPF 系统MainWindow
  13. 深入理解typedef
  14. hdu 4320 Arcane Numbers 1 多校联合赛(三)第一题
  15. 自己常用的分页SQL
  16. 计算机网络rip 图片,计算机网络-RIP协议
  17. MySQL(16)-----字符串函数
  18. 草图大师2021安装教程(超详细图文教程)
  19. syslog (cactiez)
  20. 有关初始位置检测,死区补偿,弱磁,MTPA,Foc保护措施

热门文章

  1. java 是否继续操作?代码
  2. webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
  3. python_异常处理
  4. 【数据结构与算法】之深入解析“下一个更大元素I”的求解思路与算法示例
  5. 392. Is Subsequence 判断子序列
  6. 树莓派AI视觉云台——4、树莓派的登录控制方式
  7. 2017年第八届蓝桥杯C/C++ A组国赛 —— 第一题:平方十位数
  8. 2018第九届蓝桥杯C/C++ B国赛 —— 第四题:调手表
  9. LINUX 基础命令和预处理
  10. 【Linux系统编程】进程替换:exec 函数族