zoukankan      html  css  js  c++  java
  • LeetCode求数组中的逆序对

    public class Solution {
    
        public int reversePairs(int[] nums) {
            if (nums.length < 2) {
                return 0;
            }
    
            int[] temp = new int[nums.length];
            return mergeSort(nums,0, nums.length-1, temp);
        }
    
        private int mergeSort(int[] nums, int left, int right, int[] temp) {
            if(left < right) {
                int mid = (left + right) / 2;
                int leftNum = mergeSort(nums, left, mid, temp);
                int rightNum = mergeSort(nums, mid+1, right, temp);
    
                return leftNum + rightNum + merge(nums, left, mid, right, temp) ;//逆序个数等于左边逆序的个数+右边逆序的个数+左右逆序的个数
            }
    
            return 0;
        }
    
        private int merge(int[] nums, int left, int mid, int right, int[] temp) {
            int count = 0;
            int i = left ;
            int j = mid+1;
            int k = left;
            while (i<=mid && j <= right) {
                if(nums[i] <= nums[j]) {
                    temp[k] = nums[i];
                    i++;
                } else {
                    temp[k] = nums[j];
                    j++;
                    count += mid-i+1;//如果有右边的小于左边的,那么就是从i到mid所有的都是逆序的
                }
                k++;
            }
    
            while (i <= mid) {
                temp[k] = nums[i];
                i++;
                k++;
            }
    
            while(j <= right) {
                temp[k] = nums[j];
                j++;
                k++;
            }
    
            if (right + 1 - left >= 0)
                System.arraycopy(temp, left, nums, left, right + 1 - left);
    
            return count;
        }
    }
    

    https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/

    核心思想:分治法,利用归并排序,求归并排序左右不一样的节点

  • 相关阅读:
    ESB企业服务总线
    OpenStack的架构详解[精51cto]
    用MSBuild和Jenkins搭建持续集成环境(1)[收集]
    Hmac算法
    自定义JDBCUtils工具类
    读取JDBC配置文件的二种方式
    哈希算法
    BouncyCastle
    签名算法
    3种查看java字节码的方式
  • 原文地址:https://www.cnblogs.com/iamzhoug37/p/12952813.html
Copyright © 2011-2022 走看看