leetcode 493. 翻转对(分治算法)
给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。
你需要返回给定数组中的重要翻转对的数量。
示例 1:
输入: [1,3,2,3,1]
输出: 2
代码
class Solution {public int reversePairs(int[] nums) {return getReversePairs(nums,0,nums.length-1);}public int getReversePairs(int[] nums,int l,int r) {if(l>=r) return 0;int mid=(l+r)/2;int ret=getReversePairs(nums, l, mid)+getReversePairs(nums, mid+1, r);//将左右数组排序,并统计结果int i=l,j=mid+1;while (i<=mid)//统计左右数组的反转对{while (j<=r&&(long)nums[i]>2*(long)nums[j])j++;ret+=j-mid-1;i++;}int []temp=new int[r-l+1];int p=0,p1=l,p2=mid+1;while (p1<=mid||p2<=r)//归并{if(p1>mid)temp[p++]=nums[p2++];else if(p2>r)temp[p++]=nums[p1++];else if(nums[p1]>=nums[p2])temp[p++]=nums[p2++];else temp[p++]=nums[p1++];}for(int k=0;k<temp.length;k++) nums[l+k]=temp[k];//写回原来数组return ret;}
}
leetcode 493. 翻转对(分治算法)相关推荐
- 七十六、Python | Leetcode二分查找和分治算法系列
@Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- Java实现 LeetCode 493 翻转对
493. 翻转对 给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对. 你需要返回给定数组中的重要翻转对的数 ...
- LeetCode 493. 翻转对(归并排序)
1. 题目 给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对. 你需要返回给定数组中的重要翻转对的数量. ...
- C#LeetCode刷题-分治算法
分治算法篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...
- Leetcode快速入门之第三节课: 分治算法
文章目录 1. 算法引入 2. 分治算法之归并排序 2.1 88题:合并两个有序数组 3. 分治算法之快速排序 3.1 Leetcode 215 Kth Largest Element in an A ...
- 搞定面试算法系列 | 分治算法三步走
戳蓝字"CSDN云计算"关注我们哦! 作者 | 江子抑 转自 | 编程拯救世界 主要思想 分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简 ...
- 【Datawhale】之LeetCode分类练习(分治)
分治介绍 主要思想 分治算法的主要思想是将原问题递归地分成若干个子问题,直到子问题满足边界条件,停止递归.将子问题逐个击破(一般是同种方法),将已经解决的子问题合并,最后,算法会层层合并得到原问题的答 ...
- 分治算法小结(附例题详解)
分治算法小结(附例题详解) 我的理解: 分治算法我的理解就是看人下菜碟,我们要解决的问题就好像一群人构成的集体,要我们解决这个问题,那我们就要满足这群人里面每个人不同的需求,也就是写出解决的代码,把每 ...
- Leetcode分类解析:组合算法
Leetcode分类解析:组合算法 所谓组合算法就是指:在解决一些算法问题时,需要产生输入数据的各种组合.排列.子集.分区等等,然后逐一确认每种是不是我们要的解.从广义上来说,组合算法可以包罗万象,甚 ...
最新文章
- python wget_python-如何获取wget下载的文件的文件名
- 重大合同实为旧事 数据港信披被上交所问询
- 高红冰:“五新”创新乡村商业实践
- WIN7 不用格式化磁盘怎么把FAT32系统改成NTFS系统
- TessorFlow学习 之 序言
- 如何从XMLHttpRequest创建自定义获取API
- 射击比赛(java)
- window下的免安装redis
- html中radio实现互斥
- symantec backup exec 2010 oracle 12,Symantec Backup Exec 2010在Windows平台下Oracle备份详细配置步骤...
- TFTPD32不能传输数据的解决与尝试
- cocos2d-x打印log
- 【送书活动第二话】:共10本技术书籍送! 送!! 送!!!
- Grub引导项修复详解
- 基于DLNA的移动端网络视频投屏技术
- 80x86 微处理器
- 儒猿秒杀季!ZooKeeper从0基础到源码级大神课
- 【jQuery】 # jQuery选择器
- Ubuntu zhuang SSH
- Python 语感训练100题(参考答案)