每日OJ題_分治歸并③_力扣315. 計算右側小于當前元素的個數

目錄

315. 計算右側小于當前元素的個數

解析代碼


力扣315. 計算右側小于當前元素的個數

315. 計算右側小于當前元素的個數

難度 困難

給你一個整數數組?nums?,按要求返回一個新數組?counts?。數組?counts?有該性質:?counts[i]?的值是??nums[i]?右側小于?nums[i]?的元素的數量。

示例 1:

輸入:nums = [5,2,6,1]
輸出:[2,1,1,0] 
解釋:
5 的右側有 2 個更小的元素 (2 和 1)
2 的右側僅有 1 個更小的元素 (1)
6 的右側有 1 個更小的元素 (1)
1 的右側有 0 個更小的元素

示例 2:

輸入:nums = [-1]
輸出:[0]

示例 3:

輸入:nums = [-1,-1]
輸出:[0,0]

提示:

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4
class Solution {
public:vector<int> countSmaller(vector<int>& nums) {};

解析代碼

class Solution {vector<int> ret;vector<int> index; // nums中元素的原始下標vector<int> tmp_nums;vector<int> tmp_index; // 和nums里的元素綁定一起移動
public:vector<int> countSmaller(vector<int>& nums) {int n = nums.size();ret.resize(n);index.resize(n);tmp_nums.resize(n);tmp_index.resize(n);for (int i = 0; i < n; ++i){index[i] = i;}mergeSortCnt(nums, 0, n - 1);return ret;}void mergeSortCnt(vector<int>& nums, int left, int right){if (left >= right)return;int mid = (left + right) >> 1;mergeSortCnt(nums, left, mid);mergeSortCnt(nums, mid + 1, right);int cur1 = left, cur2 = mid + 1, i = 0;while (cur1 <= mid && cur2 <= right){if (nums[cur1] > nums[cur2]){ret[index[cur1]] += (right - cur2 + 1);tmp_nums[i] = nums[cur1];tmp_index[i++] = index[cur1++];}else{tmp_nums[i] = nums[cur2];tmp_index[i++] = index[cur2++];}}while (cur1 <= mid){tmp_nums[i] = nums[cur1];tmp_index[i++] = index[cur1++];}while (cur2 <= right){tmp_nums[i] = nums[cur2];tmp_index[i++] = index[cur2++];}for (int j = left; j <= right; ++j){nums[j] = tmp_nums[j - left];index[j] = tmp_index[j - left];}}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoDB 未授權訪問

開啟 MongoDB 服務時不添加任何參數時,默認是沒有權限驗證的,而且可以遠程訪問數據庫&#xff0c; 登錄的 用戶可以通過默認端口無需密碼對數據庫進行增、刪、改、查等任意高危操作。 防護 為 MongoDB 添 加 認 證 &#xff1a; 1)MongoDB 啟動時添加–auth參數 2)給 MongoD…

Java 讀寫 ini ( 調用 Windows Api )

市面上讀取 ini 的包都是 讀取整個文件到內存中,再獲取和修改值, 最后自己再調用保存文件, 這種方式在讀取大文件的時候 非常的不友好. windows api 中有現成的高效方法 安裝 jna-platform (里面封裝了各個系統的 api ,直接用就行. 不用再手動寫固定的函數定義) jna-platfor…

JPA常見異常 JPA可能拋出的異常

1、EntityNotFoundException&#xff08;實體不存在異常&#xff09;: 通過 JPA 查找一個不存在的實體。 2、NonUniqueResultException&#xff08;非唯一結果異常&#xff09;&#xff1a; 查詢返回了多個結果&#xff0c;但期望只有一個結果。 3、TransactionRequiredExcep…

AutoSAR(基礎入門篇)13.1-EB Tresos使用初探

目錄 一、新建工程 二、添加和刪除模塊 三、界面 四、代碼生成 1、直接生成代碼

Mac 以SH腳本安裝Arthas

SH腳本安裝Aethas curl -L https://alibaba.github.io/arthas/install.sh | sh安裝腳本說明 示例源文件&#xff1a; #! /bin/bash# temp file of as.sh TEMP_ARTHAS_FILE"./as.sh.$$"# target file of as.sh TARGET_ARTHAS_FILE"./as.sh"# update timeo…

微服務中的Feign:優雅實現遠程調用的秘密武器(一)

本系列文章簡介&#xff1a; 本系列文章將深入探討Feign的特點、原理以及在微服務中的應用場景&#xff0c;幫助讀者更好地理解和使用這個優秀的遠程調用工具。無論您是初學者還是有經驗的開發人員&#xff0c;本文都將為您揭示Feign的秘密&#xff0c;并帶您一起走進微服務的世…

人類與機器的不同交流特點

對人類而言&#xff0c;事實是用來交流的&#xff0c;價值是用來自我交流的。事實是用來交流的&#xff0c;是通過提供準確、可證實的信息來傳遞和共享知識的。事實具有客觀性&#xff0c;不受個人主觀意見的影響。通過分享事實&#xff0c;人們可以更好地理解世界和彼此&#…

Android挖取原圖手指觸點區域RectF(并框線標記)放大到ImageView寬高與矩陣mapRadius,Kotlin

Android挖取原圖手指觸點區域RectF(并框線標記)放大到ImageView寬高與矩陣mapRadius&#xff0c;Kotlin 這里 Android挖取原圖中心區域RectF(并框線標記)放大到ImageView寬高&#xff0c;Kotlin-CSDN博客 實現的是把原圖中心區域的一片小圖挖取出來放大放到下面的ImageView里面…

if語句用法

if語句是單條件分支語句 定義&#xff1a;根據一個條件來控制程序執行流程(如圖3.2)。 語法格式&#xff1a; if&#xff08;表達式&#xff09;{ 若干語句 } ★注意★&#xff1a; ① 表達式的值必須是boolean 型&#xff1b; ② 不能用0代表false&#xff1b;用1代表 true&am…

德人合科技 | —數據泄露可能會對公司造成哪些影響?

數據泄露可能會對公司造成多方面的影響&#xff0c;以下是一些可能的影響&#xff1a; 財務損失&#xff1a;數據泄露可能導致公司遭受財務損失。攻擊者可能會盜取公司的敏感信息&#xff0c;如客戶信息、銀行賬戶信息、商業機密等&#xff0c;并利用這些信息進行欺詐、盜竊等非…

「優選算法刷題」:驗證棧序列

一、題目 給定 pushed 和 popped 兩個序列&#xff0c;每個序列中的 值都不重復&#xff0c;只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時&#xff0c;返回 true&#xff1b;否則&#xff0c;返回 false 。 示例 1&#xff1a; 輸入&#xff1a…

本地maven庫緩存導入私庫

為了加速編譯代碼&#xff0c;想將本地maven緩存導入內網私庫使用。 腳本網上搜的 #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name …

高效備考2024年AMC10:吃透2000-2023年1250道AMC10真題

距離2024年AMC10的比賽只有8個月多一點的時間了&#xff0c;如何備考AMC10美國數學競賽最有效&#xff1f;參加AMC10競賽是否一定要參加機構的培訓班&#xff1f;吃透歷年真題是有效的自學、了解AMC10和備考策略之一。事實上&#xff0c;網絡上有很多關于AMC10的學習資源&#…

Github 2024-03-02 開源項目日報Top9

根據Github Trendings的統計&#xff0c;今日(2024-03-02統計)共有9個項目上榜。根據開發語言中項目的數量&#xff0c;匯總情況如下&#xff1a; 開發語言項目數量非開發語言項目2Rust項目1JavaScript項目1Shell項目1C項目1TypeScript項目1C#項目1Python項目1 任天堂Switch模…

InnoDB備份與恢復篇(4)-InnoDB的故障恢復與日志分析

在MySQL數據庫中&#xff0c;InnoDB是一種非常常用的存儲引擎。它提供了高性能和可靠性&#xff0c;同時也具備故障恢復和日志分析的能力。本文將介紹InnoDB的故障恢復機制和日志分析方法。 一、故障恢復機制 事務和寫日志&#xff1a; 在InnoDB中&#xff0c;所有的數據操作都…

NIST網絡安全框架2.0版發布:十年磨一劍,安全再升級

美國國家標準與技術研究院(NIST)近日發布了網絡安全框架(CSF)的2.0正式版本&#xff0c;這是2014年該框架發布后十年來首次重大更新。新框架版本極大擴展了適用范圍&#xff0c;重點關注治理和供應鏈問題&#xff0c;并提供了豐富的資源以加速框架實施。 NIST正式發布的網絡安全…

決定西弗吉尼亞州地區版圖的關鍵歷史事件

決定西弗吉尼亞州地區版圖的關鍵歷史事件&#xff1a; 1. 內部分裂與美國內戰&#xff1a; - 在1861年美國內戰爆發時&#xff0c;弗吉尼亞州作為南方邦聯的一員宣布退出美利堅合眾國。然而&#xff0c;弗吉尼亞州西部的一些縣由于經濟結構&#xff08;主要是農業非依賴奴隸制…

使用Python進行Sentinel-2 圖像聚類

聚類或無監督分類是根據統計相似性將圖像的像素值分組或聚合到一定數量的自然類(組)的過程。在本教程中,我們將使用rasterio進行sentinel-2圖像處理,并使用功能強大的完整scikit-learn python 包在jupyter Notebook中進行聚類。 Scikit-learn是一個用于 Python 編程語言的…

Redis 存儲原理和數據模型

redis 是不是單線程 redis 單線程指的是命令處理在一個單線程中。主線程 redis-server&#xff1a;命令處理、網絡事件的監聽。 輔助線程 bio_close_file&#xff1a;異步關閉大文件。bio_aof_fsync&#xff1a;異步 aof 刷盤。bio_lazy_free&#xff1a;異步清理大塊內存。io_…

一種基于三角剖分劃分白區范圍的白平衡算法

常規的白平衡算法中,一般會通過標準色溫的R/G-B/G建議色溫坐標系,然后在該坐標系中設定白區范圍,對落入到白區范圍的R/G/B進行加權統計處理,輸出給到軟件進行白平衡的增益計算。 所介紹的這篇專利利用三角剖分的算法,在劃定的白區范圍內,利用各個標準色溫光源下所標定的白…