chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:代碼隨想錄 ? 作者:代碼隨想錄 ? 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/

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

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

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

示例 1:

  • 輸入:nums = [8,1,2,2,3]
  • 輸出:[4,0,1,1,3]
  • 解釋:對(duì)于 nums[0]=8 存在四個(gè)比它小的數(shù)字:(1,2,2 和 3)。
    對(duì)于 nums[1]=1 不存在比它小的數(shù)字。
    對(duì)于 nums[2]=2 存在一個(gè)比它小的數(shù)字:(1)。
    對(duì)于 nums[3]=2 存在一個(gè)比它小的數(shù)字:(1)。
    對(duì)于 nums[4]=3 存在三個(gè)比它小的數(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)暴力查找,時(shí)間復(fù)雜度明顯為O(n^2)。

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

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

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

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

代碼如下:

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

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

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

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

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

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

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

代碼如下:

//此時(shí)hash里保存的每一個(gè)元素?cái)?shù)值對(duì)應(yīng)的小于這個(gè)數(shù)值的個(gè)數(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]對(duì)應(yīng)的下標(biāo)
hash[vec[i]]=i;
}
//此時(shí)hash里保存的每一個(gè)元素?cái)?shù)值對(duì)應(yīng)的小于這個(gè)數(shù)值的個(gè)數(shù)
for(inti=0;ireturnvec;
}
};

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

其他語(yǔ)言版本

Java

publicint[]smallerNumbersThanCurrent(int[]nums){
Mapmap=newHashMap<>();//記錄數(shù)字nums[i]有多少個(gè)比它小的數(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)值
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

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

    關(guān)注

    1

    文章

    420

    瀏覽量

    26504

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    數(shù)字電路哪些特點(diǎn)和作用

    在電子技術(shù)領(lǐng)域,數(shù)字電路具有一系列鮮明的特點(diǎn),這些特點(diǎn)使其在眾多應(yīng)用場(chǎng)景中發(fā)揮關(guān)鍵作用,推動(dòng)著現(xiàn)代科技不斷向前發(fā)展。 信號(hào)的離散性是數(shù)字電路最為突出的特點(diǎn)之一。數(shù)字電路所處理的數(shù)字信號(hào)
    的頭像 發(fā)表于 02-04 17:17 ?877次閱讀

    MASW-004103-1365單片開(kāi)關(guān)英文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《MASW-004103-1365單片開(kāi)關(guān)英文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 12-03 13:41 ?0次下載

    數(shù)字輸出接口哪些,數(shù)字輸出接口的作用

    數(shù)字輸出接口是電子設(shè)備中用于傳輸數(shù)字信號(hào)到外部設(shè)備的關(guān)鍵部分。這些接口種類繁多,各有特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。以下是一些常見(jiàn)的數(shù)字輸出接口:
    的頭像 發(fā)表于 10-01 15:55 ?2272次閱讀

    高校轉(zhuǎn)型數(shù)字化的原因哪些

    高校轉(zhuǎn)型數(shù)字化的原因可以歸結(jié)為多個(gè)方面,這些原因共同驅(qū)動(dòng)著高等教育機(jī)構(gòu)向數(shù)字化方向邁進(jìn)。以下是幾個(gè)主要的原因: 適應(yīng)科技發(fā)展趨勢(shì): 隨著信息技術(shù)的飛速發(fā)展,數(shù)字化已經(jīng)成為各行各業(yè)不可逆轉(zhuǎn)的趨勢(shì)。高校
    的頭像 發(fā)表于 09-26 10:39 ?537次閱讀

    數(shù)字振蕩器的特點(diǎn)哪些

    數(shù)字振蕩器是一種電子設(shè)備,用于生成周期性的波形,如正弦波、方波、三角波等。它們?cè)陔娮訙y(cè)試和測(cè)量、信號(hào)處理、通信和許多其他應(yīng)用中非常重要。 1. 定義與基本原理 數(shù)字振蕩器是一種利用數(shù)字技術(shù)生成周期性
    的頭像 發(fā)表于 09-25 10:41 ?709次閱讀

    數(shù)字振蕩器的實(shí)現(xiàn)要求哪些

    數(shù)字振蕩器(也稱為數(shù)控振蕩器,NCO)的實(shí)現(xiàn)要求涉及多個(gè)方面,主要包括高精度、靈活性、頻率分辨率、相位連續(xù)性以及實(shí)現(xiàn)方法的優(yōu)化等。以下是對(duì)這些要求的介紹: 1. 高精度 低正交誤差 :在正交數(shù)字
    的頭像 發(fā)表于 09-25 10:34 ?549次閱讀

    與模擬示波器相比數(shù)字示波器的優(yōu)點(diǎn)哪些

    數(shù)字示波器(Digital Storage Oscilloscope, DSO)與模擬示波器(Analog Oscilloscope)是電子測(cè)試領(lǐng)域中用于觀察和分析電信號(hào)波形的重要工具。數(shù)字示波器
    的頭像 發(fā)表于 09-20 09:57 ?2390次閱讀

    什么是數(shù)字孿生?它有哪些優(yōu)勢(shì)?

    數(shù)字孿生作為產(chǎn)業(yè)數(shù)字化核心技術(shù)之一,正成為當(dāng)下數(shù)字技術(shù)領(lǐng)域的焦點(diǎn),其商業(yè)模式、應(yīng)用場(chǎng)景、技術(shù)變革、產(chǎn)業(yè)趨勢(shì)等正成為當(dāng)前政產(chǎn)學(xué)研用各界關(guān)注的熱點(diǎn)。
    的頭像 發(fā)表于 09-19 09:40 ?1143次閱讀

    順應(yīng)數(shù)字化趨勢(shì)!Flexus X 實(shí)例助力中小企業(yè)開(kāi)啟數(shù)字轉(zhuǎn)型“必修課”

    當(dāng)前,我國(guó)數(shù)字經(jīng)濟(jì)已進(jìn)入快速發(fā)展期。據(jù)國(guó)家數(shù)據(jù)局發(fā)布的《數(shù)字中國(guó)發(fā)展報(bào)告(2023 年)》顯示,2023 年數(shù)字經(jīng)濟(jì)核心產(chǎn)業(yè)增加值估計(jì)超過(guò) 12 萬(wàn)億元,占 GDP 比重 10%左右,
    的頭像 發(fā)表于 09-11 11:33 ?397次閱讀
    順應(yīng)<b class='flag-5'>數(shù)字</b>化趨勢(shì)!Flexus X 實(shí)例助力中小企業(yè)開(kāi)啟<b class='flag-5'>數(shù)字</b>轉(zhuǎn)型“必修課”

    工業(yè)數(shù)字化平臺(tái)什么功能

    隨著工業(yè)4.0時(shí)代的到來(lái),數(shù)字化轉(zhuǎn)型已成為工業(yè)企業(yè)發(fā)展的必然選擇。工業(yè)數(shù)字化平臺(tái)(Industrial Digital Platform)作為支持這一轉(zhuǎn)型的關(guān)鍵技術(shù)和服務(wù)集合,正逐漸在企業(yè)運(yùn)營(yíng)中發(fā)
    的頭像 發(fā)表于 09-09 14:58 ?869次閱讀

    LV1365-EX條碼識(shí)別模組在手持終端類中的應(yīng)用

    在當(dāng)今數(shù)字化轉(zhuǎn)型的浪潮中,高效、精準(zhǔn)的數(shù)據(jù)采集成為各行業(yè)提升運(yùn)營(yíng)效率的關(guān)鍵。LV1365-EX條碼識(shí)別模組,憑借其卓越的性能和強(qiáng)大的條碼識(shí)別能力,在手持終端設(shè)備中展現(xiàn)出了非凡的應(yīng)用潛力,成為物流
    的頭像 發(fā)表于 09-09 14:24 ?438次閱讀
    LV<b class='flag-5'>1365</b>-EX條碼識(shí)別模組在手持終端類中的應(yīng)用

    數(shù)字示波器的測(cè)量方法哪三種

    數(shù)字示波器是一種廣泛應(yīng)用于電子測(cè)量領(lǐng)域的儀器,它能夠?qū)崟r(shí)顯示電壓波形,幫助工程師和技術(shù)人員對(duì)電子信號(hào)進(jìn)行分析和測(cè)量。數(shù)字示波器的測(cè)量方法很多種,不同的測(cè)量方法適用于不同的應(yīng)用場(chǎng)景。以下是三種常見(jiàn)
    的頭像 發(fā)表于 07-17 18:02 ?3133次閱讀

    大功率數(shù)字電源的優(yōu)缺點(diǎn)哪些

    大功率數(shù)字電源是一種采用數(shù)字控制技術(shù)實(shí)現(xiàn)的電源系統(tǒng),具有高效率、高可靠性、高穩(wěn)定性等優(yōu)點(diǎn),但也存在一些缺點(diǎn)。 一、大功率數(shù)字電源的優(yōu)點(diǎn) 高效率 大功率數(shù)字電源采用先進(jìn)的
    的頭像 發(fā)表于 07-08 14:08 ?1094次閱讀

    數(shù)字電源控制芯片哪些型號(hào)

    數(shù)字電源控制芯片是一類用于實(shí)現(xiàn)電源管理的集成電路,廣泛應(yīng)用于各種電子設(shè)備中。它們具有高效率、低功耗、高可靠性等優(yōu)點(diǎn),可以有效地提高電源系統(tǒng)的穩(wěn)定性和性能。 數(shù)字電源控制芯片的分類 數(shù)字電源控制芯片
    的頭像 發(fā)表于 07-08 11:25 ?2686次閱讀

    數(shù)字電源與模擬電源直接的磁珠啥用

    數(shù)字電源與模擬電源是現(xiàn)代電子設(shè)備中常見(jiàn)的兩種電源類型。它們?cè)谠O(shè)計(jì)、性能和應(yīng)用方面存在一些差異。磁珠作為一種電子元件,在數(shù)字電源和模擬電源中都有應(yīng)用。 一、數(shù)字電源與模擬電源的區(qū)別 設(shè)計(jì)原理 數(shù)
    的頭像 發(fā)表于 07-08 11:19 ?2076次閱讀