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

    瀏覽量

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

    關(guān)注

    1

    文章

    420

    瀏覽量

    27104

原文標(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)推薦

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

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

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

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

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

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

    基于LockAI視覺(jué)識(shí)別模塊:手寫(xiě)數(shù)字識(shí)別

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

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

    由于資料內(nèi)存過(guò)大,分開(kāi)上傳,需要的朋友可以去主頁(yè)搜索下載哦~ 本文內(nèi)容主要分為兩部分: 第一部分是以數(shù)字技術(shù)的思維方法作為主體論述; 第二部分是從實(shí)踐角度出發(fā),對(duì)數(shù)字技術(shù)實(shí)際應(yīng)用方法進(jìn)行詳細(xì)介紹
    發(fā)表于 05-15 15:25

    通用電路圖--第3卷 通用數(shù)字電路

    學(xué)習(xí)當(dāng)前各種實(shí)際的電路的資料,介紹了各種家電、通用模擬、通用數(shù)字、測(cè)量與傳感、通信、特殊六大類的電路。 是實(shí)際操練的很好借鑒。 純分享貼,需要可以直接下載附件獲取完整資料! (如果內(nèi)容
    發(fā)表于 05-06 15:25

    不同行業(yè)的數(shù)字工廠哪些特點(diǎn)和差異?

    各行業(yè)的獨(dú)特差異也將持續(xù)推動(dòng)定制化解決方案的創(chuàng)新,以滿足不同行業(yè)日益增長(zhǎng)的數(shù)字化轉(zhuǎn)型需求。對(duì)于設(shè)備管理系統(tǒng)而言,需要深入理解各行業(yè)數(shù)字工廠的特點(diǎn)和差異,針對(duì)性地進(jìn)行優(yōu)化和升級(jí),為各行業(yè)數(shù)字工廠的穩(wěn)定運(yùn)行和高效發(fā)展提供堅(jiān)實(shí)保障。
    的頭像 發(fā)表于 04-17 10:29 ?532次閱讀
    不同行業(yè)的<b class='flag-5'>數(shù)字</b>工廠<b class='flag-5'>有</b>哪些特點(diǎn)和差異?

    不到千元即可擁有專屬數(shù)字人!華為云 Flexus 數(shù)字人應(yīng)用范圍多廣?

    隨著技術(shù)的進(jìn)步,用戶對(duì)數(shù)字人的互動(dòng)性和個(gè)性化需求也在增加,倒逼行業(yè)不斷優(yōu)化技術(shù)創(chuàng)新與產(chǎn)品研發(fā)。但數(shù)字人的制作涉及多個(gè)環(huán)節(jié),從基礎(chǔ)的建模到動(dòng)畫(huà)制作,再到最終的渲染,這一過(guò)程中數(shù)字人的外觀、身體結(jié)構(gòu)以及
    的頭像 發(fā)表于 03-10 11:04 ?705次閱讀
    不到千元即可擁有專屬<b class='flag-5'>數(shù)字</b>人!華為云 Flexus <b class='flag-5'>數(shù)字</b>人應(yīng)用范圍<b class='flag-5'>有</b>多廣?

    數(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 ?1544次閱讀

    數(shù)字化儀的工作方式哪些

    數(shù)字化儀,作為一種將圖像(膠片或像片)和圖形(包括各種地圖)的連續(xù)模擬量轉(zhuǎn)換為離散的數(shù)字量的裝置,是專業(yè)應(yīng)用領(lǐng)域中一種用途非常廣泛的圖形輸入設(shè)備。本文將深入探討數(shù)字化儀的多種工作方式,包括其技術(shù)原理、操作特點(diǎn)以及應(yīng)用領(lǐng)域。
    的頭像 發(fā)表于 01-30 15:27 ?1530次閱讀

    數(shù)字電壓表概述_數(shù)字電壓表的作用

    數(shù)字電壓表(Digital Voltmeter,簡(jiǎn)稱DVM)是一種采用數(shù)字化測(cè)量技術(shù),將連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的電子儀器。以下是對(duì)數(shù)字電壓表的詳細(xì)概述:
    的頭像 發(fā)表于 01-28 14:14 ?2233次閱讀

    ADS5401模擬供電數(shù)字供電,但是地卻只有一個(gè),不分模擬和數(shù)字,這樣的話應(yīng)該怎么接?

    ADS5401模擬供電和數(shù)字供電,但是地卻只有一個(gè),不分模擬和數(shù)字,這樣的話應(yīng)該怎么接?我們這個(gè)板子上數(shù)字地和模擬地是分開(kāi)的,這樣不好搞啊。我們模擬前端是用的一個(gè)放大器把單端轉(zhuǎn)差分
    發(fā)表于 01-22 08:29

    數(shù)字證書(shū)的基礎(chǔ)知識(shí)

    在我們的日常生活中,無(wú)論是網(wǎng)購(gòu)、掌上銀行還是在線辦公,都離不開(kāi)一個(gè)關(guān)鍵的保障——網(wǎng)絡(luò)安全。而在這個(gè)數(shù)字化的世界里,一種神奇的工具,它能證明“你”是“你”,就好比網(wǎng)絡(luò)世界中的“身份證”,它就是我們
    的頭像 發(fā)表于 12-05 09:33 ?1398次閱讀
    <b class='flag-5'>數(shù)字</b>證書(shū)的基礎(chǔ)知識(shí)

    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次下載