Leetcode题库 798.得分最高的最小轮调(差分数组 C实现)
文章目录
- 算法一 双层循环
- 算法二 差分数组
算法一 双层循环
时间复杂度: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实现)相关推荐
- 798.得分最高的最小轮调
题目 798.得分最高的最小轮调 题目大意 给你一个数组 nums,我们可以将它按一个非负整数 k 进行轮调,这样可以使数组变为 [nums[k], nums[k + 1], ... nums[num ...
- 【LeetCode - 798】得分最高的最小轮调(转化法)
解题报告: 思路一:这题首先说一个nlogn的方法. 首先一个主客转化,题目描述是说把数组做翻转,idx不变,然后nums[i]和i作比较.那么我们可以转化为让数组不变,idx转变,即:假设刚开始i= ...
- LeetCode题库第867题 转置矩阵
LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...
- LeetCode题库第888题 公平的糖果棒交换
LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...
- LeetCode题库第2题 两数相加
两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...
- LeetCode题库第1题 两数之和
两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...
- LeetCode题库整理【Java】—— 3 无重复字符的最长子串
LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...
- LeetCode题库整理【Java】—— 2 两数相加
LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...
- LeetCode题库整理【Java】—— 7整数反转
LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...
最新文章
- MVC3学习 四 EF删除操作
- 自动微分到底是什么?这里有一份自我简述
- numpy中的矩阵与数学上的矩阵的关系
- Asp.net MVC使用Model Binding解除Session, Cookie等依赖
- [Android Studio 权威教程]Windows下安装Android Studio
- 荣获中国音视频产业大会「科技创新奖」,网易云信彰显行业领先水平
- 论文浅尝 | 面向简单知识库问答的模式修正强化策略
- 【jackson 异常】com.fasterxml.jackson.databind.JsonMappingException异常处理
- 超大杯来了!一加10 Ultra将在第三季度登场:或搭载OPPO 自研影像芯片
- 用$.getJSON() 和$.post()获取第三方数据做页面 ——惠品折页面(1)
- MFC工作笔记0005---::在vc++中是什么意思
- 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第十讲 WPF 系统MainWindow
- 深入理解typedef
- hdu 4320 Arcane Numbers 1 多校联合赛(三)第一题
- 自己常用的分页SQL
- 计算机网络rip 图片,计算机网络-RIP协议
- MySQL(16)-----字符串函数
- 草图大师2021安装教程(超详细图文教程)
- syslog (cactiez)
- 有关初始位置检测,死区补偿,弱磁,MTPA,Foc保护措施
热门文章
- java 是否继续操作?代码
- webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
- python_异常处理
- 【数据结构与算法】之深入解析“下一个更大元素I”的求解思路与算法示例
- 392. Is Subsequence 判断子序列
- 树莓派AI视觉云台——4、树莓派的登录控制方式
- 2017年第八届蓝桥杯C/C++ A组国赛 —— 第一题:平方十位数
- 2018第九届蓝桥杯C/C++ B国赛 —— 第四题:调手表
- LINUX 基础命令和预处理
- 【Linux系统编程】进程替换:exec 函数族