女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

劍指Offer(35):數組中的逆序對

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-10 22:42 ? 次閱讀

劍指Offer(35):數組中的逆序對

一、引子

這個系列是我在牛客網上刷《劍指Offer》的刷題筆記,旨在提升下自己的算法能力。
查看完整的劍指Offer算法題解析請點擊CSDN和github鏈接:
劍指Offer完整習題解析CSDN地址
github地址

二、題目

在數組中的兩個數字,如果前面一個數字大于后面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P%1000000007

輸入描述:

題目保證輸入的數組中沒有的相同的數字
數據范圍:

對于%50的數據,size<=10^4

對于%75的數據,size<=10^5

對于%100的數據,size<=2*10^5

事例1:

輸入:

1,2,3,4,5,6,7,0

輸出:

7

1、思路

首先我們先明白題目的意思,比如一個數組{7,5,6,4},它的逆序對總共有五對,{7,5},{7,6},{7,4},{5,4},{6,4} 只要是前面比后面大就組成一個逆序對。

看到這個題目,我們的第一反應是順序掃描整個數組。每掃描到一個數組的時候,逐個比較該數字和它后面的數字的大小。如果后面的數字比它小,則這兩個數字就組成了一個逆序對。假設數組中含有n個數字。由于每個數字都要和O(n)這個數字比較,因此這個算法的時間復雜度為O(n^2)。

現在用上面說的這種方式是一種時間復雜度比較高的一種,我們換一種思路,采用歸并排序的方法。

先把數組分解成兩個長度為2的子數組,再把這兩個子數組分解成兩個長度為1的子數組。接下來一邊合并相鄰的子數組,一邊統計逆序對的數目。在第一對長度為1的子數組{7}、{5}中7>5,因此(7,5)組成一個逆序對。同樣在第二對長度為1的子數組{6},{4}中也有逆序對(6,4),由于已經統計了這兩對子數組內部的逆序對,因此需要把這兩對子數組進行排序,避免在之后的統計過程中重復統計。

逆序對的總數 = 左邊數組中的逆序對的數量 + 右邊數組中逆序對的數量 + 左右結合成新的順序數組時中出現的逆序對的數量

2、編程實現

python

代碼實現方案:

# -*- coding:utf-8 -*-
class Solution:
    def InversePairs(self, data):
        # write code here
        if not data:
            return 0
        temp = [i for i in data]
        return self.mergeSort(temp, data, 0, len(data)-1) % 1000000007
    def mergeSort(self, temp, data, low, high):
        if low >= high:
            temp[low] = data[low]
            return 0
        mid = (low + high) / 2
        left = self.mergeSort(data, temp, low, mid)
        right = self.mergeSort(data, temp, mid+1, high)
        count = 0
        i = low
        j = mid+1
        index = low
        while i <= mid and j <= high:
            if data[i] <= data[j]:
                temp[index] = data[i]
                i += 1
            else:
                temp[index] = data[j]
                count += mid-i+1
                j += 1
            index += 1
        while i <= mid:
            temp[index] = data[i]
            i += 1
            index += 1
        while j <= high:
            temp[index] = data[j]
            j += 1
            index += 1
        return count + left + right

分享技術,樂享生活:我們的公眾號計算機視覺這件小事每周推送“AI”系列資訊類文章,歡迎您的關注!

本文由博客一文多發平臺 OpenWrite 發布!

審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1804

    文章

    48737

    瀏覽量

    246664
  • 機器學習
    +關注

    關注

    66

    文章

    8492

    瀏覽量

    134122
  • 數組
    +關注

    關注

    1

    文章

    419

    瀏覽量

    26376
  • 深度學習
    +關注

    關注

    73

    文章

    5555

    瀏覽量

    122498
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    offer 06.從頭到尾打印鏈表

    編程語言
    jf_40173672
    發布于 :2022年07月25日 09:43:38

    動態規劃與貪婪法題的背包問題總結

    【LeetCode & offer刷題】動態規劃與貪婪法題16:背包問題總結
    發表于 06-09 16:44

    聚辰半導體通用MCU應用

    聚辰半導體通用MCU應用 聚辰半導體有限公司的前身是美國ISSI(Integrated Silicon Solution)全資控股子公司芯成半導體(上海)有限
    發表于 03-19 08:52 ?1241次閱讀

    C語言教程之逆序存放數據

    C語言教程之逆序存放數據,很好的C語言資料,快來學習吧。
    發表于 04-25 15:03 ?0次下載

    逆序算法程序

    逆序算法程序,其實也不是那么難,就分享一下,希望大家別介意
    發表于 05-19 14:31 ?8次下載

    加大人工智能投入 通用電氣Watson機器人

    通過本次的收購,通用電氣IBM的Watson機器人,利用通用強大的資金和技術力量來加大研發和推廣速度。
    發表于 11-22 09:51 ?584次閱讀

    介紹了數組和簇數據類型以及創建和使用數組和簇的方法

    數組索引從0開始。 也就是說,如果一維(1D)數組包含n個元素,那么索引范圍就是0~n – 1,其中索引0數組的第一個元素,索引n
    發表于 11-16 18:13 ?1.3w次閱讀
    介紹了<b class='flag-5'>數組</b>和簇數據類型以及創建和使用<b class='flag-5'>數組</b>和簇的方法

    java數組的三種定義方式_java數組的定義及使用方法(推薦)

    java數組是一種很常用的工具,本文將介紹來java數組的三種定義方式以及java數組
    發表于 01-29 09:53 ?3.3w次閱讀

    Offer(37):數字在排序數組中出現的次數

    搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] github:[鏈接]
    的頭像 發表于 12-10 22:40 ?297次閱讀

    如何對一維數組做maxpooling

    最近在offer里看到一道算法題很有意思,分享給大家。
    的頭像 發表于 04-11 08:41 ?3177次閱讀

    C 語言數組的基本結構

    的元素 求數組中元素的最短距離 求兩個有序數組的共同元素 求三個數組的共同元素 找出數組唯一的重復元素 找出出現奇數次的元素 求
    的頭像 發表于 06-22 10:56 ?816次閱讀

    數組的定義 什么是數組

    數組 數組是內置類型,是一組同類型數據的集合,它是值類型,通過從0開始的下標索引訪問元素值。 在初始化后長度是固定的,無法修改其長度。當作為方法的參數傳入時將復制一份數組而不是引用同一
    的頭像 發表于 10-09 09:39 ?2336次閱讀

    labview怎么查數組相同元素的個數

    要查找LabVIEW數組相同元素的個數,可以使用以下步驟: 創建一個包含要查找的數值的數組。這可以通過手動輸入數組元素或從文件/其他數據
    的頭像 發表于 12-28 16:42 ?4754次閱讀

    PHP數組的使用方法!

    PHP數組的使用方法! PHP是一種廣泛使用的網絡編程語言,它的數組功能非常強大且靈活。數組是一種數據結構,它允許我們在單個變量存儲多個
    的頭像 發表于 01-12 15:11 ?750次閱讀

    數組和鏈表在內存的區別 數組和鏈表的優缺點

    數組和鏈表在內存的區別 數組和鏈表的優缺點? 數組和鏈表是常見的數據結構,用于組織和存儲數據。它們在內存的存儲方式以及優缺點方面存在一些
    的頭像 發表于 02-21 11:30 ?1447次閱讀