91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

1365.有多少小于當前數字的數字

算法與數據結構 ? 來源:代碼隨想錄 ? 作者:代碼隨想錄 ? 2022-06-30 09:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

哈希表的神奇應用!

1365.有多少小于當前數字的數字

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

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

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

以數組形式返回答案。

示例 1:

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

那么我們來看一下如何優化。

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

所以可以定義一個新數組,將數組排個序。

排序之后,其實每一個數值的下標就代表這前面有幾個比它小的了

代碼如下:

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

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

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

例如,數組:1 2 3 4 4 4 ,第一個數值4的下標是3,第二個數值4的下標是4了。

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

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

最后在遍歷原數組nums,用hash快速找到每一個數值 對應的 小于這個數值的個數。存放在將結果存放在另一個數組中。

代碼如下:

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

流程如圖:

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

關鍵地方講完了,整體C++代碼如下:

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

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

其他語言版本

Java

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

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數值
    +關注

    關注

    0

    文章

    80

    瀏覽量

    14582
  • 數組
    +關注

    關注

    1

    文章

    420

    瀏覽量

    26542

原文標題:有多少小于當前數字的數字?

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    工業數字化改造哪些前提

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

    數字電路哪些特點和作用

    在電子技術領域,數字電路具有一系列鮮明的特點,這些特點使其在眾多應用場景中發揮關鍵作用,推動著現代科技不斷向前發展。 信號的離散性是數字電路最為突出的特點之一。數字電路所處理的數字信號
    的頭像 發表于 02-04 17:17 ?926次閱讀

    MASW-004103-1365單片開關英文手冊

    電子發燒友網站提供《MASW-004103-1365單片開關英文手冊.pdf》資料免費下載
    發表于 12-03 13:41 ?0次下載

    數字輸出接口哪些,數字輸出接口的作用

    數字輸出接口是電子設備中用于傳輸數字信號到外部設備的關鍵部分。這些接口種類繁多,各有特點,適用于不同的應用場景。以下是一些常見的數字輸出接口:
    的頭像 發表于 10-01 15:55 ?2336次閱讀

    高校轉型數字化的原因哪些

    高校轉型數字化的原因可以歸結為多個方面,這些原因共同驅動著高等教育機構向數字化方向邁進。以下是幾個主要的原因: 適應科技發展趨勢: 隨著信息技術的飛速發展,數字化已經成為各行各業不可逆轉的趨勢。高校
    的頭像 發表于 09-26 10:39 ?559次閱讀

    【「數字IC設計入門」閱讀體驗】+ 數字IC設計流程

    設計的流程,對IC行業個初步的認識,這樣有助于后面技術章節的學習;對于我通讀第1章后,最大的收獲就是了解了數字IC的設計流程。書中使用圖1-1總結了數字IC的設計流程: 對于IC專業工程師來說,上圖
    發表于 09-25 15:51

    數字振蕩器的特點哪些

    數字振蕩器是一種電子設備,用于生成周期性的波形,如正弦波、方波、三角波等。它們在電子測試和測量、信號處理、通信和許多其他應用中非常重要。 1. 定義與基本原理 數字振蕩器是一種利用數字技術生成周期性
    的頭像 發表于 09-25 10:41 ?725次閱讀

    數字振蕩器的實現要求哪些

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

    與模擬示波器相比數字示波器的優點哪些

    數字示波器(Digital Storage Oscilloscope, DSO)與模擬示波器(Analog Oscilloscope)是電子測試領域中用于觀察和分析電信號波形的重要工具。數字示波器
    的頭像 發表于 09-20 09:57 ?2408次閱讀

    什么是數字孿生?它有哪些優勢?

    數字孿生作為產業數字化核心技術之一,正成為當下數字技術領域的焦點,其商業模式、應用場景、技術變革、產業趨勢等正成為當前政產學研用各界關注的熱點。
    的頭像 發表于 09-19 09:40 ?1181次閱讀

    順應數字化趨勢!Flexus X 實例助力中小企業開啟數字轉型“必修課”

    當前,我國數字經濟已進入快速發展期。據國家數據局發布的《數字中國發展報告(2023 年)》顯示,2023 年數字經濟核心產業增加值估計超過 12 萬億元,占 GDP 比重 10%左右,
    的頭像 發表于 09-11 11:33 ?416次閱讀
    順應<b class='flag-5'>數字</b>化趨勢!Flexus X 實例助力中小企業開啟<b class='flag-5'>數字</b>轉型“必修課”

    使用數字萬用表的優勢哪些

    在電子測量領域,數字萬用表(DMM)憑借其高精度和用戶友好性,成為了電工、工程師以及電子技術人員不可或缺的測量工具。相較于模擬萬用表,數字萬用表采用先進的數字處理技術,提升了測量的準確性和便捷性
    的頭像 發表于 09-10 11:10 ?1295次閱讀

    工業數字化平臺什么功能

    隨著工業4.0時代的到來,數字化轉型已成為工業企業發展的必然選擇。工業數字化平臺(Industrial Digital Platform)作為支持這一轉型的關鍵技術和服務集合,正逐漸在企業運營中發
    的頭像 發表于 09-09 14:58 ?887次閱讀

    LV1365-EX條碼識別模組在手持終端類中的應用

    在當今數字化轉型的浪潮中,高效、精準的數據采集成為各行業提升運營效率的關鍵。LV1365-EX條碼識別模組,憑借其卓越的性能和強大的條碼識別能力,在手持終端設備中展現出了非凡的應用潛力,成為物流
    的頭像 發表于 09-09 14:24 ?447次閱讀
    LV<b class='flag-5'>1365</b>-EX條碼識別模組在手持終端類中的應用

    數字化工廠的數據采集平臺什么優勢

    數字化工廠的數據采集平臺什么優勢
    的頭像 發表于 07-31 16:17 ?531次閱讀
    主站蜘蛛池模板: 在线成人亚洲 | 在线视频一二三区 | 女的扒开尿口让男人桶 | 日本黄色的视频 | 三级黄色片免费观看 | 天天拍拍天天爽免费视频 | 国精视频一区二区视频 | 亚洲日本在线观看视频 | 久久久久免费精品国产 | 曰本黄色一级 | 久久国产精品永久免费网站 | 奇米精品 | 国产天美 | 国产高清免费不卡观看 | 黄色网免费观看 | 国产精品免费一级在线观看 | 久久伊人精品青青草原高清 | 午夜黄色影院 | 日韩欧美卡通动漫在线观看 | 久久久久国产精品免费免费不卡 | 99热久久精品最新 | 国产在线观看www鲁啊鲁免费 | 久久精品2020 | 欧美高清一级片 | 激情六月天 | 国产女人小便视频 | 男人呻吟双腿大开男男h互攻 | 色骚网| 五月花亚洲 | 大黄一级片| 色宅男午夜电影在线观看 | 轻点灬大ji巴太粗太长了啊h | 国产亚洲精品aaa大片 | 欧美成人免费大片888 | 深夜视频在线 | 色色免费| 奇米7777第四色 | 天天色姑娘 | 天天做日日干 | 国产yin乱大巴视频 国产爱v | 色噜噜狠狠大色综合 |