国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【程序員面試金典】面試題 17.26. 稀疏相似度

這篇具有很好參考價(jià)值的文章主要介紹了【程序員面試金典】面試題 17.26. 稀疏相似度。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

題目描述

描述:兩個(gè)(具有不同單詞的)文檔的交集(intersection)中元素的個(gè)數(shù)除以并集(union)中元素的個(gè)數(shù),就是這兩個(gè)文檔的相似度。例如,{1, 5, 3} 和 {1, 7, 2, 3} 的相似度是 0.4,其中,交集的元素有 2 個(gè),并集的元素有 5 個(gè)。給定一系列的長(zhǎng)篇文檔,每個(gè)文檔元素各不相同,并與一個(gè) ID 相關(guān)聯(lián)。它們的相似度非?!跋∈琛?,也就是說(shuō)任選 2 個(gè)文檔,相似度都很接近 0。請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法返回每對(duì)文檔的 ID 及其相似度。只需輸出相似度大于 0 的組合。請(qǐng)忽略空文檔。為簡(jiǎn)單起見(jiàn),可以假定每個(gè)文檔由一個(gè)含有不同整數(shù)的數(shù)組表示。

輸入為一個(gè)二維數(shù)組 docs,docs[i] 表示 id 為 i 的文檔。返回一個(gè)數(shù)組,其中每個(gè)元素是一個(gè)字符串,代表每對(duì)相似度大于 0 的文檔,其格式為 {id1},{id2}: {similarity},其中 id1 為兩個(gè)文檔中較小的 id,similarity 為相似度,精確到小數(shù)點(diǎn)后 4 位。以任意順序返回?cái)?shù)組均可。

示例:

輸入: 
[
  [14, 15, 100, 9, 3],
  [32, 1, 9, 3, 5],
  [15, 29, 2, 6, 8, 7],
  [7, 10]
]
輸出:
[
  "0,1: 0.2500",
  "0,2: 0.1000",
  "2,3: 0.1429"
]

提示:

docs.length <= 500
docs[i].length <= 500

解題思路

思路:最直觀的想法是,使用ump1存儲(chǔ)單詞以及單詞所出現(xiàn)的文檔集合,使用ump2存儲(chǔ)文檔以及文檔相關(guān)聯(lián)的文檔集合以及交集元素個(gè)數(shù),再利用公式求解相似度即可。

class Solution {
public:
    vector<string> computeSimilarities(vector<vector<int>>& docs) {
        //單詞 單詞對(duì)應(yīng)的文檔id
        unordered_map<int,vector<int>> ump1;
        for(int i=0;i<docs.size();i++)
        {
            for(auto word:docs[i])
                ump1[word].push_back(i);
        }
        // 文檔 交集文檔 交集個(gè)數(shù)
        unordered_map<int,unordered_map<int,int>> ump2;
        for(auto m:ump1)
        {
            //ids表示存在交集的文檔
            auto ids=m.second;
            for(int i=0;i+1<ids.size();i++)
            {
                for(int j=i+1;j<ids.size();j++)
                {
                    ump2[ids[i]][ids[j]]++;
                }
            }
        }
        //精度誤差
        vector<string> result;
        char temp[256];
        for(auto n:ump2)
        {
            int id1=n.first;
            for(auto k:n.second)
            {
                int id2=k.first;
                double similary=(double)k.second/(docs[id1].size()+docs[id2].size()-k.second);
                sprintf(temp, "%d,%d: %0.4lf", id1, id2, similary + 1e-9);
                result.push_back(temp);
            }
        }
        return result;
    }
};

總結(jié):ump2利用的非常巧妙,有點(diǎn)類(lèi)似于數(shù)據(jù)庫(kù)多表查詢(xún)的感覺(jué)啦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-531332.html

到了這里,關(guān)于【程序員面試金典】面試題 17.26. 稀疏相似度的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【程序員面試金典】面試題 17.22 . 單詞轉(zhuǎn)換

    描述:給定字典中的兩個(gè)詞,長(zhǎng)度相等。寫(xiě)一個(gè)方法,把一個(gè)詞轉(zhuǎn)換成另一個(gè)詞, 但是一次只能改變一個(gè)字符。每一步得到的新詞都必須能在字典中找到。 編寫(xiě)一個(gè)程序,返回一個(gè)可能的轉(zhuǎn)換序列。如有多個(gè)可能的轉(zhuǎn)換序列,你可以返回任何一個(gè)。 示例 1: 示例 2: 思路:最

    2024年02月11日
    瀏覽(21)
  • 【程序員面試金典】面試題 17.14. 最小K個(gè)數(shù)

    描述:設(shè)計(jì)一個(gè)算法,找出數(shù)組中最小的k個(gè)數(shù)。以任意順序返回這k個(gè)數(shù)均可。 示例: 提示: 0 = len(arr) = 100000 0 = k = min(100000, len(arr)) 思路:最直觀的想法是,排序。 擴(kuò)展:最大堆。最小的k個(gè)數(shù),那么就可以維持一個(gè)大小為k的最大堆,先填充k個(gè)數(shù)到最大堆中,然后再依次遍

    2024年02月11日
    瀏覽(18)
  • 【程序員面試金典】面試題 17.19. 消失的兩個(gè)數(shù)字

    描述:給定一個(gè)數(shù)組,包含從 1 到 N 所有的整數(shù),但其中缺了兩個(gè)數(shù)字。你能在 O(N) 時(shí)間內(nèi)只用 O(1) 的空間找到它們嗎? 以任意順序返回這兩個(gè)數(shù)字均可。 示例 1: 示例 2: 提示: nums.length = 30000 思路:最直觀的想法是,位運(yùn)算。消失的兩個(gè)數(shù)字和只出現(xiàn)一次的兩個(gè)元素,本質(zhì)

    2024年02月12日
    瀏覽(26)
  • 【程序員面試金典】面試題 17.21. 直方圖的水量

    【程序員面試金典】面試題 17.21. 直方圖的水量

    描述:給定一個(gè)直方圖(也稱(chēng)柱狀圖),假設(shè)有人從上面源源不斷地倒水,最后直方圖能存多少水量?直方圖的寬度為 1。 上面是由數(shù)組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方圖,在這種情況下,可以接 6 個(gè)單位的水(藍(lán)色部分表示水)。 感謝 Marcos 貢獻(xiàn)此圖。 示例: 思路:最直觀的想

    2024年02月11日
    瀏覽(16)
  • 《程序員面試金典(第6版)面試題 16.10. 生存人數(shù)(前綴和思想)

    《程序員面試金典(第6版)面試題 16.10. 生存人數(shù)(前綴和思想)

    給定 N 個(gè)人的出生年份和死亡年份,第 i 個(gè)人的出生年份為 birth[i],死亡年份為 death[i],實(shí)現(xiàn)一個(gè)方法以計(jì)算生存人數(shù)最多的年份。 你可以假設(shè)所有人都出生于 1900 年至 2000 年(含 1900 和 2000 )之間。如果一個(gè)人在某一年的任意時(shí)期處于生存狀態(tài),那么他應(yīng)該被納入那一年的

    2024年02月02日
    瀏覽(27)
  • 《程序員面試金典(第6版)》 面試題 08.11. 硬幣(動(dòng)態(tài)規(guī)劃,組合問(wèn)題,C++)

    《程序員面試金典(第6版)》 面試題 08.11. 硬幣(動(dòng)態(tài)規(guī)劃,組合問(wèn)題,C++)

    硬幣。給定數(shù)量不限的硬幣,幣值為25分、10分、5分和1分,編寫(xiě)代碼計(jì)算n分有幾種表示法。(結(jié)果可能會(huì)很大,你需要將結(jié)果模上1000000007) 示例1: 輸入: n = 5 輸出:2 解釋: 有兩種方式可以湊成總金額: 5=5 5=1+1+1+1+1 示例2: 輸入: n = 10 輸出:4 解釋: 有四種方式可以湊成總金額: 1

    2023年04月08日
    瀏覽(19)
  • 讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)

    讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)

    1.3.3.1.?開(kāi)發(fā)人員可以只專(zhuān)注于和自己相關(guān)的字段,因?yàn)樗鼈儠?huì)繼承其他字段的默認(rèn)值 1.3.3.2.?默認(rèn)值可使大型API在感覺(jué)上很小巧 1.4.1.1.?OpenAPI通常用于RESTful服務(wù) 1.4.1.2.?non-REST服務(wù)則使用Protocol Buffers、Thrift或類(lèi)似的接口定義語(yǔ)言(interface definition language,IDL) 1.4.1.3.?接口定義工

    2024年02月04日
    瀏覽(51)
  • 程序員面試邏輯題

    程序員面試邏輯題

    答案: 這個(gè)題有點(diǎn)像數(shù)學(xué)歸納法,就是假設(shè)有 A A A 和 B B B 兩個(gè)人是黑色的帽子,這樣的話(huà)第一次開(kāi)燈, A A A 看到 B B B 是黑色的,其他人都是白色的,那么 A A A 會(huì)覺(jué)得 B B B 是那個(gè)黑色的,同理 B B B 也是這么想的。一次關(guān)燈之后 A A A 和 B B B 都沒(méi)有打耳光, A A A 反應(yīng)過(guò)來(lái)

    2024年02月09日
    瀏覽(21)
  • 程序員必備的面試技巧

    “程序員必備的面試技巧,就像是編寫(xiě)一段完美的代碼一樣重要。在面試戰(zhàn)場(chǎng)上,我們需要像忍者一樣靈活,像偵探一樣聰明,還要像無(wú)敵鐵金剛一樣堅(jiān)定。只有掌握了這些技巧,我們才能在面試的舞臺(tái)上閃耀光芒,成為那個(gè)令HR們心動(dòng)的程序猿!” 提醒:在發(fā)布作品前,請(qǐng)

    2024年01月21日
    瀏覽(27)
  • 程序員面試完之后,人麻了...

    程序員面試完之后,人麻了...

    去面試吧 ? 面不被錄用的試 面hr為了完成任務(wù)的試 面一輪二輪沒(méi)有下文試 面需要通勤2小時(shí)的試 面隨時(shí)加班的試 ...... 今年的“金三銀四”被網(wǎng)友們稱(chēng)為“銅三鐵四”, 招聘軟件上的崗位都能背下來(lái)了,簡(jiǎn)歷卻依然石沉大海。 好不容易等來(lái)個(gè)回復(fù),還不如不回復(fù) 或者是遇到

    2023年04月23日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包