日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1152. 用户网站访问行为分析

發(fā)布時間:2024/7/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1152. 用户网站访问行为分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

為了評估某網(wǎng)站的用戶轉化率,我們需要對用戶的訪問行為進行分析,并建立用戶行為模型。

日志文件中已經(jīng)記錄了用戶名、訪問時間 以及 頁面路徑。

為了方便分析,日志文件中的 N 條記錄已經(jīng)被解析成三個長度相同且長度都為 N 的數(shù)組,分別是:用戶名 username,訪問時間 timestamp 和 頁面路徑 website。

第 i 條記錄意味著用戶名是 username[i] 的用戶在 timestamp[i] 的時候訪問了路徑為 website[i] 的頁面。

我們需要找到用戶訪問網(wǎng)站時的 『共性行為路徑』,也就是有最多的用戶都 至少按某種次序訪問過一次 的三個頁面路徑。需要注意的是,用戶 可能不是連續(xù)訪問 這三個路徑的。

『共性行為路徑』是一個 長度為 3 的頁面路徑列表,列表中的路徑 不必不同,并且按照訪問時間的先后升序排列。

如果有多個滿足要求的答案,那么就請返回按字典序排列最小的那個。(頁面路徑列表 X 按字典序小于 Y 的前提條件是:X[0] < Y[0] 或 X[0] == Y[0] 且 (X[1] < Y[1] 或 X[1] == Y[1] 且 X[2] < Y[2]))

題目保證一個用戶會至少訪問 3 個路徑一致的頁面,并且一個用戶不會在同一時間訪問兩個路徑不同的頁面。

示例: 輸入: username = ["joe","joe","joe","james","james","james","james","mary","mary","mary"], timestamp = [1,2,3,4,5,6,7,8,9,10], website = ["home","about","career","home","cart","maps","home","home","about","career"] 輸出:["home","about","career"] 解釋: 由示例輸入得到的記錄如下: ["joe", 1, "home"] ["joe", 2, "about"] ["joe", 3, "career"] ["james", 4, "home"] ["james", 5, "cart"] ["james", 6, "maps"] ["james", 7, "home"] ["mary", 8, "home"] ["mary", 9, "about"] ["mary", 10, "career"]2 個用戶至少訪問過一次 ("home", "about", "career")。 有 1 個用戶至少訪問過一次 ("home", "cart", "maps")。 有 1 個用戶至少訪問過一次 ("home", "cart", "home")。 有 1 個用戶至少訪問過一次 ("home", "maps", "home")。 有 1 個用戶至少訪問過一次 ("cart", "maps", "home")。提示: 3 <= N = username.length = timestamp.length = website.length <= 50 1 <= username[i].length <= 10 0 <= timestamp[i] <= 10^9 1 <= website[i].length <= 10 username[i] 和 website[i] 都只含小寫字符

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/analyze-user-website-visit-pattern
著作權歸領扣網(wǎng)絡所有。商業(yè)轉載請聯(lián)系官方授權,非商業(yè)轉載請注明出處。

2. 解題

class Solution {map<vector<string>,unordered_set<string>> count;//網(wǎng)站路徑,用戶集合unordered_map<string, vector<pair<int,string>>> m;//用戶名,《用戶訪問時間,網(wǎng)站》 public:vector<string> mostVisitedPattern(vector<string>& username, vector<int>& timestamp, vector<string>& website) {int i, n = username.size();for(i = 0; i < n; i++) {m[username[i]].push_back({timestamp[i],website[i]});}for(auto it = m.begin(); it != m.end(); ++it){sort(it->second.begin(), it->second.end(),[&](auto a, auto b){return a.first < b.first;//某用戶訪問的網(wǎng)站按時間排序});}vector<string> path;for(auto it = m.begin(); it != m.end(); ++it){dfs(it->second, path, 0, it->first);//回溯生成所有的三元組}int maxcount = 0;vector<vector<string>> result;for(auto it = count.begin(); it != count.end(); ++it){ //選出人數(shù)最多的最大的路徑if(it->second.size() > maxcount)//人數(shù)多{result.clear();result.push_back(it->first);maxcount = it->second.size();}else if(it->second.size() == maxcount)//人數(shù)相等result.push_back(it->first);}sort(result.begin(), result.end());//取字典序最小的return result[0];}void dfs(vector<pair<int,string>>& web, vector<string>& path, int idx, string username){if(path.size()==3){count[path].insert(username);return;}for(int i = idx; i < web.size(); ++i){path.push_back(web[i].second);dfs(web, path, i+1, username);path.pop_back();}} };

164 ms 19.8 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1152. 用户网站访问行为分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。