博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Swift]LeetCode493. 翻转对 | Reverse Pairs
阅读量:5101 次
发布时间:2019-06-13

本文共 2133 字,大约阅读时间需要 7 分钟。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝()
➤GitHub地址:
➤原文地址: 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Given an array nums, we call (i, j) an important reverse pair if i < j and nums[i] > 2*nums[j].

You need to return the number of important reverse pairs in the given array.

Example1:

Input: [1,3,2,3,1]Output: 2 

Example2:

Input: [2,4,3,5,1]Output: 3 

Note:

  1. The length of the given array will not exceed 50,000.
  2. All the numbers in the input array are in the range of 32-bit integer.

给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对

你需要返回给定数组中的重要翻转对的数量。

示例 1:

输入: [1,3,2,3,1]输出: 2

示例 2:

输入: [2,4,3,5,1]输出: 3

注意:

  1. 给定数组的长度不会超过50000
  2. 输入数组中的所有数字都在32位整数的表示范围内。

Runtime: 1632 ms
Memory Usage: 20.3 MB
1 class Solution { 2     func reversePairs(_ nums: [Int]) -> Int { 3         var res:Int = 0 4         var copy:[Int] = nums.sorted(by:<) 5         var bit:[Int] = [Int](repeating:0,count:copy.count + 1) 6         for ele in nums 7         { 8             res += search(&bit, index(copy, 2 * ele + 1)) 9             insert(&bit, index(copy, ele))10         }11         return res12     }13     14     func index(_ arr:[Int],_ val:Int) -> Int15     {16         var l:Int = 017         var r:Int = arr.count - 118         var m:Int = 019         while(l <= r)20         {21             m = l + ((r - l) >> 1)22             if arr[m] >= val23             {24                 r = m - 125             }26             else27             {28                 l = m + 129             }30         }31         return l + 132     }33     34     func search(_ bit:inout [Int],_ i:Int) -> Int35     {36         var i = i37         var sum:Int = 038         while(i < bit.count)39         {40             sum += bit[i]41             i += i & -i42         }43         return sum44     }45     46     func insert(_ bit:inout [Int],_ i:Int)47     {48         var i = i49         while(i > 0)50         {51             bit[i] += 152             i -= i & -i53         }54     }55 }

 

转载于:https://www.cnblogs.com/strengthen/p/10348715.html

你可能感兴趣的文章
PyQt5--EventSender
查看>>
android 通过AlarmManager实现守护进程
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
win7下把电脑设置成wlan热
查看>>
Java 多态 虚方法
查看>>
jquery.validate插件在booststarp中的运用
查看>>
java常用的包
查看>>
PHP批量覆盖文件并执行cmd命令脚本
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
支持向量机——内核
查看>>
万能的SQLHelper帮助类
查看>>
uboot分析:uboot的启动过程分析
查看>>
tmux的简单快捷键
查看>>
springboot笔记04——读取配置文件+使用slf4j日志
查看>>
[Swift]LeetCode653. 两数之和 IV - 输入 BST | Two Sum IV - Input is a BST
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
微信小程序的wxml文件和wxss文件在webstrom的支持
查看>>
Html5 离线页面缓存
查看>>
[php]在PHP中读取和写入WORD文档的代码
查看>>
WCF傻瓜模式写程序
查看>>