【Leetcode合集】2824. 統計和小于目標的下標對數目

2824. 統計和小于目標的下標對數目

2824. 統計和小于目標的下標對數目

代碼倉庫地址: https://github.com/slience-me/Leetcode

個人博客 :https://slienceme.xyz

給你一個下標從 0 開始長度為 n 的整數數組 nums 和一個整數 target ,請你返回滿足 0 <= i < j < nnums[i] + nums[j] < target 的下標對 (i, j) 的數目。

示例 1:

輸入:nums = [-1,1,2,3,1], target = 2
輸出:3
解釋:總共有 3 個下標對滿足題目描述:
- (0, 1) ,0 < 1 且 nums[0] + nums[1] = 0 < target
- (0, 2) ,0 < 2 且 nums[0] + nums[2] = 1 < target 
- (0, 4) ,0 < 4 且 nums[0] + nums[4] = 0 < target
注意 (0, 3) 不計入答案因為 nums[0] + nums[3] 不是嚴格小于 target 。

示例 2:

輸入:nums = [-6,2,5,-2,-7,-1,3], target = -2
輸出:10
解釋:總共有 10 個下標對滿足題目描述:
- (0, 1) ,0 < 1 且 nums[0] + nums[1] = -4 < target
- (0, 3) ,0 < 3 且 nums[0] + nums[3] = -8 < target
- (0, 4) ,0 < 4 且 nums[0] + nums[4] = -13 < target
- (0, 5) ,0 < 5 且 nums[0] + nums[5] = -7 < target
- (0, 6) ,0 < 6 且 nums[0] + nums[6] = -3 < target
- (1, 4) ,1 < 4 且 nums[1] + nums[4] = -5 < target
- (3, 4) ,3 < 4 且 nums[3] + nums[4] = -9 < target
- (3, 5) ,3 < 5 且 nums[3] + nums[5] = -3 < target
- (4, 5) ,4 < 5 且 nums[4] + nums[5] = -8 < target
- (4, 6) ,4 < 6 且 nums[4] + nums[6] = -4 < target

提示:

  • 1 <= nums.length == n <= 50
  • -50 <= nums[i], target <= 50

方案1:暴力解

第一種純暴力解,遍歷替換

class Solution {
public:int countPairs(vector<int>& nums, int target) {int sum=0;for (int i = 0; i < nums.size(); ++i){for (int j = i+1; j < nums.size(); ++j){if (i < j && nums[i]+nums[j]<target){sum+=1;}}}return sum;}
};

執行用時分布 4ms 擊敗89.43%使用 C++ 的用戶

消耗內存分布20.30MB 擊敗15.83%使用 C++ 的用戶

方案2

優化,采用類似快排的方法,進行計數

你可以使用雙指針的方法來解決這個問題。首先對數組進行排序,然后使用雙指針,一個指向數組的開頭,另一個指向數組的末尾,逐步向中間移動并計算對應的數對滿足條件的數量。

class Solution {
public:int countPairs(vector<int>& nums, int target) {// [-6,2,5,-2,-7,-1,3]sort(nums.begin(), nums.end());//先排序int ans = 0, left = 0, right = nums.size() - 1; //定義左索引,定義右索引while (left < right) { //快排常見的條件 左側索引<右側索引//  [-7,-6,-2,-1,2,3,5]// -7 + 5 = -2 < -2 right--// -7 + 3 = -4 < -2if (nums[left] + nums[right] < target) { ans += right - left; //增加全部滿足條件的個數left++;} else {right--;}}return ans;}
};

執行用時分布 0ms 擊敗100.00%使用 C++ 的用戶

消耗內存分布 20.39MB 擊敗7.44%使用 C++ 的用戶

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

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

相關文章

線性空間(也叫向量空間)、線性運算

線性空間、線性運算 線性空間&#xff0c;也稱向量空間。 假設是一個非空集合&#xff0c;是一個實數域。 在中定義了一個加法&#xff1a;即對中任何兩個元素和&#xff0c;總有中另外一個元素與它們相對應&#xff0c;稱為和的和&#xff0c;記作&#xff1a; 在定義了一個…

mac電腦系統活動監控:iStat Menus 中文 for Mac

iStat Menus是一款Mac操作系統上的系統監控工具&#xff0c;它提供了實時的系統狀態和性能數據&#xff0c;讓用戶可以方便地監控和管理自己的電腦。iStat Menus以菜單欄圖標的形式顯示各種系統指標&#xff0c;用戶可以輕松訪問和查看這些信息。 以下是iStat Menus軟件的一些…

debian 設置系統默認以命令行方式啟動,關閉x windows

debian 設置系統默認以命令行方式啟動&#xff0c;關閉x windows 2021-01-02 tech linux 設置 grub啟動設置在/etc/default/grub中&#xff0c;打開 default grub 配置: $ sudo vim /etc/default/grub修改以下配置&#xff1a; 更新grub&#xff0c;設置多用戶啟動: …

針對MySql知識的回顧

MySql雖然是一個相對簡單的關系型數據庫&#xff0c;但也是一個最常用的數據庫&#xff0c;也是一個非常經典的數據庫&#xff0c;很多云產品也是基于MySql做了二開&#xff0c;從而變得非常強大&#xff0c;其中MySql最常用的是Innodb引擎&#xff0c;因為該引擎支持事務&…

第14章 多線程三 (線程同步)

目錄 內容說明 章節內容 1、為什么需要多線程同步? 2、Java如何實現多線程同步?

CUDA學習筆記9——CUDA 共享內存 / Shared Memory

由于共享內存擁有僅次于寄存器的讀寫速度&#xff0c;比全局內存快得多。因此&#xff0c;能夠用共享內存訪問替換全局內存訪問的場景都可以考慮做對應的優化。 不利用共享內存的矩陣乘法 不利用共享內存的矩陣乘法的直接實現。每個線程讀取A的一行和B的一列&#xff0c;并計…

『Linux升級路』基礎開發工具——gcc/g++篇

&#x1f525;博客主頁&#xff1a;小王又困了 &#x1f4da;系列專欄&#xff1a;Linux &#x1f31f;人之為學&#xff0c;不日近則日退 ??感謝大家點贊&#x1f44d;收藏?評論?? 目錄 一、快速認識gcc/g 二、預處理 &#x1f4d2;1.1頭文件展開 &#x1f4d2;1…

java字符串的常見用法

java字符串的常見用法 Java中的字符串是一個非常常用的對象&#xff0c;它屬于Java的內置類String類的實例。字符串在Java中是不可變的&#xff0c;即一旦創建了一個字符串對象&#xff0c;就不能修改它的值。 下面是一些關于Java字符串的詳細用法&#xff1a; 1&#xff09;創…

從零開始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 "從零開始&#xff0c;用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合 前言準備工作編寫docker-compose.yml文件為什么使用本機ip為什么skywa…

代碼隨想錄-刷題第六天

242. 有效的字母異位詞 題目鏈接&#xff1a;242. 有效的字母異位詞 思路&#xff1a;哈希法。利用數組來記錄出現的字母個數&#xff0c;然后判斷是否為字母異位詞。 時間復雜度&#xff1a;O(n) class Solution {public boolean isAnagram(String s, String t) {int[] co…

【云備份】第三方庫的認識與使用

文章目錄 json庫粗略認識詳細認識writer 類reader類jsoncpp序列化實現jsoncpp反序列化實現 bundle文件壓縮庫簡單認識bundle庫實現文件壓縮bundle庫實現文件解壓縮 httplib庫Request類Response類Server類Client類 json庫 粗略認識 json是一種數據交換格式&#xff0c;采用完全…

激光切割設備中模組的作用有哪些?

激光切割設備是一種高精度的自動化加工設備&#xff0c;用于對金屬、非金屬等材料進行精確切割。直線模組作為激光切割設備的重要組成部分&#xff0c;在激光切割設備中起著重要的作用&#xff0c;為設備的運動系統提供了高精度、高穩定性和高效率的運動控制。 1、高精度的位置…

excel單元格加背景顏色不生效?

如果在 Excel 中設置單元格背景顏色而發現不生效&#xff0c;可能有幾個原因。以下是一些常見的解決方法&#xff1a; 1. **單元格鎖定&#xff1a;** 檢查所在單元格是否被鎖定。如果單元格被鎖定&#xff0c;并且工作表被保護&#xff0c;你可能無法更改其背景顏色。在工作表…

mysql 優化器的AST樹是啥

from ChatGPT: MySQL中的優化器&#xff08;optimizer&#xff09;使用AST&#xff08;Abstract Syntax Tree&#xff0c;抽象語法樹&#xff09;來表示查詢的語法結構。AST是一種樹狀結構&#xff0c;它反映了查詢語句的語法層次&#xff0c;是一個抽象表示&#xff0c;用于更…

Linux - 文件系統 - 理解目錄 - 理解 軟/硬鏈接

前言 在上篇博客當中&#xff0c;我們對 文件系統 和 inode 做了初步了解&#xff0c;本博客將在上篇博客的基礎之上&#xff0c;對于 文件系統當中的目錄進行進步一闡述。 Linux - 進一步理解 文件系統 - inode - 機械硬盤-CSDN博客 目錄 一個文件有一個 inode&#xff0c;…

Redis打包事務,分批提交

一、需求背景 接手一個老項目&#xff0c;在項目啟動的時候&#xff0c;需要將xxx省整個省的所有區域數據數據、以及系統字典配置逐條保存在Redis緩存里面&#xff0c;這樣查詢的時候會更快; 區域數據字典數據一共大概20000多條,&#xff0c;前同事直接使用 list.forEach…

Windows安裝MongoDB

1、下載MongoDB的zip&#xff0c;解壓 2、創建目錄 mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\db mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\log 3、創建一個配置文件mongod.cfg&#xff0c…

使用一個接口的結果作為第二個接口的參數并將兩者的數據放置成下拉框的格式

背景 我使用下拉框實現選擇id 但是只有兩個接口 一個是所有的id 另一個是id對應的具體信息 我想把id傳入另一個接口并且獲取其name然后寫成類似這樣的數組 [ { value: 1, label: ‘名稱1’ }&#xff0c; { value: 2, label: ‘名稱2’ } { value: 3, label: ‘名稱3’ } ] 然…

【PPspliT】ppt轉pdf-保留過渡動畫

網址 http://www.maxonthenet.altervista.org/ppsplit.php 下載安裝 使用 再次打開ppt&#xff0c;就能在上方的選項欄里頭看到了&#xff1a;

GEE生物量碳儲量——利用紅和近紅外波段和OTSU大津法提取純凈森林面積

簡介: 如何利用紅和近紅外波段和OTSU大津法提取純凈森林面積?本文的主要邏輯是利用特定時期的遙感影像的波段,提取指定范圍的內的DN值,然后分別統計發生閾值變化的峰值區域,從而作為篩選森林的臨界點,如果研究區較大的話則需要先進行影像分割,分割成為相同大小的區域,…