日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

1365.有多少小于當(dāng)前數(shù)字的數(shù)字

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:代碼隨想錄 ? 作者:代碼隨想錄 ? 2022-06-30 09:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

哈希表的神奇應(yīng)用!

1365.有多少小于當(dāng)前數(shù)字的數(shù)字

題目鏈接:https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits/

給你一個數(shù)組 nums,對于其中每個元素 nums[i],請你統(tǒng)計數(shù)組中比它小的所有數(shù)字的數(shù)目。

換而言之,對于每個 nums[i]你必須計算出有效的 j 的數(shù)量,其中 j 滿足 j != i 且 nums[j] < nums[i]?。

以數(shù)組形式返回答案。

示例 1:

  • 輸入:nums = [8,1,2,2,3]
  • 輸出:[4,0,1,1,3]
  • 解釋:對于 nums[0]=8 存在四個比它小的數(shù)字:(1,2,2 和 3)。
    對于 nums[1]=1 不存在比它小的數(shù)字。
    對于 nums[2]=2 存在一個比它小的數(shù)字:(1)。
    對于 nums[3]=2 存在一個比它小的數(shù)字:(1)。
    對于 nums[4]=3 存在三個比它小的數(shù)字:(1,2 和 2)。

示例 2:

  • 輸入:nums = [6,5,4,8]
  • 輸出:[2,1,0,3]

示例 3:

  • 輸入:nums = [7,7,7,7]
  • 輸出:[0,0,0,0]

提示:

  • 2 <= nums.length <= 500
  • 0 <= nums[i] <= 100

思路

兩層for循環(huán)暴力查找,時間復(fù)雜度明顯為O(n^2)。

那么我們來看一下如何優(yōu)化。

首先要找小于當(dāng)前數(shù)字的數(shù)字,那么從小到大排序之后,該數(shù)字之前的數(shù)字就都是比它小的了。

所以可以定義一個新數(shù)組,將數(shù)組排個序。

排序之后,其實每一個數(shù)值的下標(biāo)就代表這前面有幾個比它小的了

代碼如下:

vectorvec=nums;
sort(vec.begin(),vec.end());//從小到大排序之后,元素下標(biāo)就是小于當(dāng)前數(shù)字的數(shù)字

用一個哈希表hash(本題可以就用一個數(shù)組)來做數(shù)值和下標(biāo)的映射。這樣就可以通過數(shù)值快速知道下標(biāo)(也就是前面有幾個比它小的)。

此時有一個情況,就是數(shù)值相同怎么辦?

例如,數(shù)組:1 2 3 4 4 4 ,第一個數(shù)值4的下標(biāo)是3,第二個數(shù)值4的下標(biāo)是4了。

這里就需要一個技巧了,在構(gòu)造數(shù)組hash的時候,從后向前遍歷,這樣hash里存放的就是相同元素最左面的數(shù)值和下標(biāo)了。代碼如下:

inthash[101];
for(inti=vec.size()-1;i>=0;i--){//從后向前,記錄vec[i]對應(yīng)的下標(biāo)
hash[vec[i]]=i;
}

最后在遍歷原數(shù)組nums,用hash快速找到每一個數(shù)值 對應(yīng)的 小于這個數(shù)值的個數(shù)。存放在將結(jié)果存放在另一個數(shù)組中。

代碼如下:

//此時hash里保存的每一個元素數(shù)值對應(yīng)的小于這個數(shù)值的個數(shù)
for(inti=0;i

流程如圖:

de6ca87c-f812-11ec-ba43-dac502259ad0.png

關(guān)鍵地方講完了,整體C++代碼如下:

classSolution{
public:
vector<int>smallerNumbersThanCurrent(vector<int>&nums){
vector<int>vec=nums;
sort(vec.begin(),vec.end());//從小到大排序之后,元素下標(biāo)就是小于當(dāng)前數(shù)字的數(shù)字
inthash[101];
for(inti=vec.size()-1;i>=0;i--){//從后向前,記錄vec[i]對應(yīng)的下標(biāo)
hash[vec[i]]=i;
}
//此時hash里保存的每一個元素數(shù)值對應(yīng)的小于這個數(shù)值的個數(shù)
for(inti=0;ireturnvec;
}
};

可以排序之后加哈希,時間復(fù)雜度為O(nlogn)

其他語言版本

Java

publicint[]smallerNumbersThanCurrent(int[]nums){
Mapmap=newHashMap<>();//記錄數(shù)字nums[i]有多少個比它小的數(shù)字
int[]res=Arrays.copyOf(nums,nums.length);
Arrays.sort(res);
for(inti=0;iif(!map.containsKey(res[i])){//遇到了相同的數(shù)字,那么不需要更新該number的情況
map.put(res[i],i);
}
}
for(inti=0;ireturnres;
}

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)值
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    14755
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    27483

原文標(biāo)題:有多少小于當(dāng)前數(shù)字的數(shù)字?

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    別再認(rèn)錯了,隔離式數(shù)字輸入≠數(shù)字隔離器!選好隔離式數(shù)字輸入讓PLC設(shè)計少走彎路

    前言隔離式數(shù)字輸入與數(shù)字隔離器,名稱中均帶有“隔離”與“數(shù)字”關(guān)鍵詞,且核心均為實現(xiàn)信號的電氣隔離傳輸,但實際上二者存在很大差異。今天講透“隔離式數(shù)字輸入”和“
    的頭像 發(fā)表于 03-04 17:47 ?625次閱讀
    別再認(rèn)錯了,隔離式<b class='flag-5'>數(shù)字</b>輸入≠<b class='flag-5'>數(shù)字</b>隔離器!選好隔離式<b class='flag-5'>數(shù)字</b>輸入讓PLC設(shè)計少走彎路

    科技亮相2026數(shù)字設(shè)備與創(chuàng)新博覽會

    2026 年 1 月,震亮相在達(dá)卡舉辦的 Digital Device & Innovation Expo 2026(數(shù)字設(shè)備與創(chuàng)新博覽會)。本屆展會于 1 月 28 日至 31 日舉行
    的頭像 發(fā)表于 02-01 09:13 ?1125次閱讀

    LT1365高速運算放大器:性能特性與應(yīng)用指南

    LT1364/LT1365高速運算放大器:性能特性與應(yīng)用指南 在電子設(shè)計領(lǐng)域,高速運算放大器是實現(xiàn)高性能電路的關(guān)鍵組件。今天,我們來深入探討Linear Technology Corporation
    的頭像 發(fā)表于 01-29 16:20 ?261次閱讀

    TFP410-EP:數(shù)字顯示傳輸?shù)睦硐胫x

    一款產(chǎn)品,它能很好地滿足當(dāng)前市場對于數(shù)字顯示傳輸?shù)男枨蟆=裉炀秃痛蠹以敿?xì)分析一下這款產(chǎn)品的特性和相關(guān)設(shè)計要點。 文件下載: tfp410-ep.pdf 二、TFP410-EP 概述 TFP410-EP
    的頭像 發(fā)表于 12-27 14:10 ?659次閱讀

    數(shù)字工牌是什么?數(shù)字工牌錄音方案設(shè)計

    一些內(nèi)容,但是如果有數(shù)字工牌同時開啟了錄音,這個時候就可以回放一下和客戶溝通的內(nèi)容,方便進(jìn)一步去跟進(jìn)客戶需求。 ? 數(shù)字工牌的核心功能需求是什么? 市面上的數(shù)字工牌帶錄音的、
    的頭像 發(fā)表于 12-01 16:41 ?579次閱讀
    <b class='flag-5'>數(shù)字</b>工牌是什么?<b class='flag-5'>數(shù)字</b>工牌錄音方案設(shè)計

    基于XL4016的單片機(jī)數(shù)字直流穩(wěn)壓電源板

    10mV,電流小于10mA。 不同于傳統(tǒng)的電位器調(diào)節(jié)穩(wěn)壓輸出,數(shù)字設(shè)置的穩(wěn)壓電源,其關(guān)鍵在于電路能正確體現(xiàn)要求。一個數(shù)字穩(wěn)壓電源,一般以下部分:能電子調(diào)節(jié)的穩(wěn)壓部分,ADC部分,DA
    發(fā)表于 11-10 20:06

    數(shù)字化與信息化什么區(qū)別和聯(lián)系

    數(shù)字化與信息化是緊密相關(guān)但又有區(qū)別的兩個概念,它們在推動社會和經(jīng)濟(jì)發(fā)展中扮演著不同角色。以下從定義、核心目標(biāo)、技術(shù)基礎(chǔ)、應(yīng)用范圍、實施路徑及相互聯(lián)系六個方面進(jìn)行詳細(xì)分析: 一、定義差異 數(shù)字
    的頭像 發(fā)表于 10-11 16:48 ?1876次閱讀
    <b class='flag-5'>數(shù)字</b>化與信息化<b class='flag-5'>有</b>什么區(qū)別和聯(lián)系

    掌握數(shù)字設(shè)計基礎(chǔ):邁向芯片設(shè)計的第一步

    數(shù)字電路分為兩類: 組合邏輯(Combinational Logic):僅依賴當(dāng)前輸入直接產(chǎn)生輸出,比如加法器、編碼器。 時序邏輯(Sequential Logic):具備存儲特性,能記憶歷史狀態(tài),比如
    發(fā)表于 10-09 21:11

    什么是數(shù)字萬用表?

    電子設(shè)備的狀況需要使用測量儀器來確定。對于無法目測來確定狀態(tài)的電子設(shè)備,建議使用數(shù)字萬用表進(jìn)行測量。本節(jié)將詳細(xì)介紹諸如“數(shù)字萬用表是什么?”“數(shù)字萬用表與模擬萬用表區(qū)別嗎?”等
    的頭像 發(fā)表于 08-18 10:00 ?2572次閱讀
    什么是<b class='flag-5'>數(shù)字</b>萬用表?

    工業(yè)數(shù)字化改造哪些前提

    工業(yè)數(shù)字化改造是通過數(shù)字技術(shù)(如物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能、云計算等)對傳統(tǒng)工業(yè)生產(chǎn)、管理、運營模式進(jìn)行全面升級的過程。其前提條件涉及技術(shù)、管理、人才、資金、基礎(chǔ)設(shè)施等多個維度,需系統(tǒng)性布局才能確保
    的頭像 發(fā)表于 07-08 10:20 ?921次閱讀

    基于LockAI視覺識別模塊:手寫數(shù)字識別

    評分等場景。這項技術(shù)不僅提高了數(shù)據(jù)處理的速度和準(zhǔn)確性,還極大地簡化了輸入流程,為金融、郵政和教育等行業(yè)帶來了顯著的便利。 1.2 手寫數(shù)字識別常用方法 目前,實現(xiàn)手寫數(shù)字識別方法很多,常用的方法如下
    發(fā)表于 06-30 16:45

    Analog Devices / Maxim Integrated MAX22193四通道工業(yè)數(shù)字輸入數(shù)據(jù)手冊

    Analog Devices MAX22193四通道工業(yè)數(shù)字輸入 將四個24V工業(yè)數(shù)字輸入轉(zhuǎn)換為四個CMOS邏輯兼容的并行輸出。所有四個通道的輸入至輸出傳播延遲小于300ns。與傳統(tǒng)的阻性輸入相比
    的頭像 發(fā)表于 06-18 15:36 ?999次閱讀
    Analog Devices / Maxim Integrated MAX22193四通道工業(yè)<b class='flag-5'>數(shù)字</b>輸入數(shù)據(jù)手冊

    PCB中的數(shù)字地和模擬地

    PCB中的數(shù)字地和模擬地 ? 為什么PCB要分數(shù)字地和模擬地 雖然是相通的,但是距離長了,就不一樣了。同一條導(dǎo)線,不同的點的電壓可能是不一樣的,特別是電流較大時。因為導(dǎo)線存在著電阻,電流流過時就會
    的頭像 發(fā)表于 06-10 13:29 ?927次閱讀

    實用電子電路設(shè)計(全6本)—— 數(shù)字系統(tǒng)設(shè)計

    由于資料內(nèi)存過大,分開上傳,需要的朋友可以去主頁搜索下載哦~ 本文內(nèi)容主要分為兩部分: 第一部分是以數(shù)字技術(shù)的思維方法作為主體論述; 第二部分是從實踐角度出發(fā),對數(shù)字技術(shù)實際應(yīng)用方法進(jìn)行詳細(xì)介紹
    發(fā)表于 05-15 15:25
    和政县| 额尔古纳市| 内乡县| 景谷| 阿坝| 延安市| 临泉县| 如皋市| 革吉县| 宣威市| 沙雅县| 同心县| 黔江区| 泰州市| 台湾省| 泗洪县| 肥城市| 武邑县| 凭祥市| 昆明市| 平邑县| 盐山县| 英超| 吉木乃县| 大石桥市| 海宁市| 新津县| 凉山| 独山县| 宽甸| 仁寿县| 昭平县| 全椒县| 富锦市| 民乐县| 中山市| 晋江市| 长丰县| 通辽市| 金山区| 沂水县|