[leetcode 双周赛 6] 1152 用户网站访问行为分析

news/2024/5/9 6:19:13/文章来源:https://blog.csdn.net/weixin_30455067/article/details/102221486

目录

  • 1152 Analyze User Website Visit Pattern 用户网站访问行为分析
    • 描述
    • 思路
    • 代码实现

1152 Analyze User Website Visit Pattern 用户网站访问行为分析

描述

为了评估某网站的用户转化率,我们需要对用户的访问行为进行分析,并建立用户行为模型。
日志文件中已经记录了用户名访问时间以及页面路径

为了方便分析,日志文件中的 N 条记录已经被解析成三个长度相同且长度都为 N 的数组,分别是:用户名 username,访问时间 timestamp 和 页面路径 website。第 i 条记录意味着用户名是 username[i] 的用户在 timestamp[i] 的时候访问了路径为 website[i] 的页面。

我们需要找到用户访问网站时的 『共性行为路径』,也就是有最多的用户都 至少按某种次序访问过一次 的三个页面路径。需要注意的是,用户 可能不是连续访问 这三个路径的。

『共性行为路径』是一个 长度为 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] 都只含小写字符

思路

暴力枚举每个用户的顺序网页访问路径(有三个页面)
选出访问路径出现最多次数的那个 或者 字典序排列最小的那个
1640888-20190814001627496-1847533616.png

代码实现

重要存储结构示意图如下:
1640888-20190814002502713-1170942975.png

暴力枚举每一用户访问路径并投票

class Solution {public List<String> mostVisitedPattern(String[] username, int[] timestamp, String[] website) {// utwRecords 根据用户名username组合三个数组 <username, <timestamp, website>>// 注意内部使用TreeMap 是为了排序 时间戳timestamp的按顺序排列HashMap<String, TreeMap<Integer, String>> utwRecords = new HashMap<>();for (int i = 0; i < username.length; i++) {if (!utwRecords.containsKey(username[i])) {utwRecords.put(username[i], new TreeMap<Integer, String>());}utwRecords.get(username[i]).put(timestamp[i], website[i]);}// uwRecords 提取utwRecords中除时间戳timestamp的数据 // 用户名username以及对应访问的网页website(按时间戳排序)HashMap<String, ArrayList<String>> uwRecords = new HashMap<>();for (String name : utwRecords.keySet()) {uwRecords.put(name, new ArrayList<String>());for (Integer time : utwRecords.get(name).keySet()) {uwRecords.get(name).add(utwRecords.get(name).get(time));}}// cntWP 存储所枚举的每一条网页访问路径 并计录其出现的次数// <网页访问路径(3个网页名称合成1条字符串), 出现次数>HashMap<String, Integer> cntWP = new HashMap<>();// maxCnt 网页访问路径出现最多次数为int maxCnt = 0;// res 最多次数的网页访问路径(3个网页名称合成1条字符串)String res = new String();for (String name : uwRecords.keySet()) {// len 当前用户所访问的网页数int len = uwRecords.get(name).size();// single 存储当前用户所访问网页的访问路径 并去重HashSet<String> single = new HashSet<>();for (int i = 0; i < len-2; i++) {for (int j = i+1; j < len-1; j++) {for (int k = j+1; k < len; k++) {// 网页访问路径格式: A-->B-->CString cur = (new StringBuilder()).append(uwRecords.get(name).get(i)).append("->").append(uwRecords.get(name).get(j)).append("->").append(uwRecords.get(name).get(k)).toString();single.add(cur);}}}// 遍历当前用户所访问网络的路径 存储并给访问路径计数for (String str : single) {if (!cntWP.containsKey(str)) {cntWP.put(str, 0);}cntWP.put(str, cntWP.get(str)+1);int curCnt = cntWP.get(str);// 当该访问路径出现次数curCnt大于最大访问次数maxCnt //      那么结果路径res就是该路径// 或者// 当该访问路径出现次数curCnt等于最大访问次数maxCnt 且字典序小于原出现次数最多的路径res //      那么结果路径res就是该路径if (curCnt > maxCnt | (curCnt == maxCnt && str.compareTo(res) < 0)) {maxCnt = curCnt;res = str;}}}// ans 存储所求结果访问路径的3个网页// 其实也可以使用 Arrays.asList(res.split("->"))ArrayList<String> ans = new ArrayList<>();for (String str : res.split("->")) {ans.add(str);}return ans;}
}

转载于:https://www.cnblogs.com/slowbirdoflsh/p/11349461.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_765993.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shopify网站转化率优化之结账页checkout优化

昨天分享了“利用GOOGLE地图API实现shopify结账页checkout地址自动填写地址字段”是个非常屌的功能&#xff0c;但shopify默认的结账页checkout是这样的如图 [caption id"" align"alignnone" width"1920"] shopify默认结账页电脑版[/caption] 上…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

php支持redis扩展,php支持redis扩展-php各扩展插件-互劦cms 官方网站-内容管理系统...

1.使用phpinfo()函数查看PHP的版本信息&#xff0c;这会决定扩展文件版本。2.解压缩后&#xff0c;将php_redis.dll和php_redis.pdb拷贝至php的ext目录下3.修改php.ini&#xff0c;(PS&#xff1a;此php.ini文件是在Apache目录)在该文件中加入&#xff1a;; php_redisextension…

eclipse-cdt添加文件注释_给网站任何页面添加强大的社交分享按钮(含Shopify操作教程)...

由于Shopify的主题的分享按钮可分享的社交平台比较少&#xff0c;所以我就从网上找了一个功能超级强大的集社交分享与关注的Share this分享按钮&#xff0c;他支持49种按钮分享&#xff0c;关注社交平台按钮&#xff0c;点赞按钮等等&#xff0c;网站地址是&#xff1a;https:/…

嘉缘人才网管理系统php,asp 嘉缘人才网站内容管理系统终结版 v7.0

《嘉缘人才内容管理系统》基于Win32平台&#xff0c;采用ASPMSSQL 2000运行环境。其安装简单方便&#xff0c;只需将程序上传至服务器后即可使用&#xff1b;强大的企业招聘、个人求职、新闻资讯、高级人才、兼职人才、留言反馈、及强大的在线支付与自定义标签等功能&#xff0…

wordpress wpdb-update 能获取更新的id嘛?_外贸建站基础课程—wordpress

说到 WordPress 相信很多同学都会知道这是一个能够搭建外贸网站的开发平台。但是在具体的概念理解和实际操作上或多或少的存在一些偏差。今天我们就来系统的讲解一下wordpress究竟是什么样的魅力能够让建站人员对它如此着迷。一.Wordpress是什么&#xff1f;WordPress是一个以P…

几十万的词如何用每页500词分页展示_SEO优化分享_如何提升网站收录_网站SEO三要素的注意点...

SEO优化大师课程教你如何提升网站收录以及网站SEO三要素的注意点。今天给你们免费分享SEO优化大师地课程&#xff0c;包含了如何提升网站收录和网站SEO三要素的注意点。想要了解更多SEO优化内容&#xff0c;欢迎来咨询。如何提升网站收录&#xff1a;保持规律的更新&#xff0c…

开启访问控制_Ping32网站访问控制使用教程

通过网站访问控制功能&#xff0c;可以对终端用户访问网站进行管控&#xff0c;可以设置网站访问黑白名单&#xff0c;只允许用户访问某些网站或禁止访问某些网站&#xff1b;支持设置网页关键词&#xff0c;涉及到关键词的网页禁止打开。选择网络管理分组&#xff0c;点击网站…

seo按天扣费系统_seo计费系统,seo按天计费系统使用介绍

常规优化关键词查找繁琐&#xff0c;SEO工作量大&#xff0c;优化时间较慢&#xff0c;用户查询不能自主操作&#xff0c;自主查询加词&#xff0c;没有良好的用户体验。试想一个客户本来可以优化10个词的&#xff0c;但是客户不知道都想优化那些词&#xff0c;如何把单个客户的…

2021安徽高考成绩查询链接,2021年安徽高考成绩查询网站查分网址:https://www.ahzsks.cn/...

【导语】高考结束后大家最为关心的问题就是在哪里查分&#xff0c;如何查分&#xff0c;更三高考高考频道特别整理2021年安徽高考成绩查询查分网址&#xff0c;成绩公布时考生可直接点击网址进行查分&#xff0c;预祝大家都能顺利的考上理想的大学&#xff01;由于&#xff0c;…

服务器崩溃如何恢复网站数据库,数据库服务器崩了如何恢复

数据库服务器崩了如何恢复 内容精选换一换本文以Linux操作系统为例&#xff0c;介绍如何将已下载的副本集备份文件的数据恢复至自建数据库。关于如何下载备份文件&#xff0c;请参见下载备份文件。该方法仅适用于副本集实例。本地自建MongoDB数据库已安装3.4版本客户端工具。假…

java网站兼容性设置_Web测试兼容性

随时操作系统&#xff0c;浏览器越来越多样性&#xff0c;导致软件兼容性测试在目前软件测试领域占有很重要的地位&#xff0c;无论是B/S架构还是C/S架构的软件都需要进行兼容性测试&#xff0c;为了充分保证产品的平台无关性&#xff0c;使用户充分感受到软件的友好。Web兼容性…

奇奇seo优化软件_黑龙江seo优化排名软件

黑龙江sexaa0c1o优化排名软件&#xff0c;随着现代化信息技术的发展&#xff0c;人们越来越多的从网络来获取信息。近年来&#xff0c;我们获取的信息绝大部分都是来源于网络&#xff0c;网络如今已成为信息的最大载体。为了让更多消费者了解并消费企业提供的服务和产品&#x…

进服务器网站报错应用程序,IIS:应用程序池中的服务器错误、超时时间已到

网站前台现象&#xff1a;页面报错问题现象&#xff1a;在服务器日志有&#xff1a;【为应用程序池 提供服务的进程关闭时间超过了限制。进程 ID 是 7480。】提示的ID可以有很多&#xff0c;例如3844、8004、6124等数字。发现很多类似的问题&#xff0c;引发的根本原因未知&am…

jitter 如何优化网络_网络营销:企业如何通过站外优化做好网站的SEO优化呢?...

既然要了解SEO网站优化&#xff0c;那么除了站内优化外&#xff0c;还应该讲到站外优化。什么是站外优化呢?站外优化从字面意义上看&#xff0c;是优化网站以外的内容&#xff0c;做网站的外部优化。企业可以通过对官网进行站内优化&#xff0c;使自己的网站利于蜘蛛爬取;而站…

php 商城漏洞,爆PHPWeb成品网站超市最新注入漏洞

今天早上去乌云逛的时候&#xff0c;看到西部数码分站被爆注入&#xff0c;于是就关注了一下。然后到下午没想到就公开了&#xff0c;一看原来是phpweb成品网站超市。西部数码说是第三方就忽略了&#xff0c;蛋疼。你这忽略想我就想到&#xff0c;既然你们西部有那其他的网站也…

Dreamweaver CS6 新建站点

1、打开新建站点菜单 打开Dreamweaver CS6软件&#xff0c;在Dreamweaver CS6软件界面的导航上可以看到站点菜单栏。点击站点&#xff0c;然后选择弹出菜单上的新建站点子菜单。 2、添加服务器 点击左下角的“”图标添加解析的服务器。 开发网站的时候一般使用的是本地搭建的服…

python制作网页服务器_python网络编程学习--简易网站服务器制作

python 网络编程和其他语言都是一样的&#xff0c;服务器这块步骤为&#xff1a; 1. 创建套接字 2. 绑定地址 3. 监听该描述符的所有请求 4. 有新的请求到了调用accept处理请求 Python Web服务器网关接口(Python Web Server Gateway Interface&#xff0c;简称“WSGI”)&#x…

web服务器创建站点,Dreamweaver创建Web站点的六个步骤流程

对于一个SEO优化人员来说&#xff0c;虽然不要求对于网站建站有多么精通&#xff0c;但是还是必须要懂得一些使用建站工具的基本操作。在Dreamweaver中&#xff0c;Web站点可视为网站中所有文件的集合。我们可以在本地计算机上创建Web页&#xff0c;也可将Web页上传至Web服务器…

web性能优化 高性能网站建设指南

公司的平台需要对访问速度等进行优化&#xff0c;大致的方向就是从缓存、压缩、减少请求等方面进行处理&#xff0c;不光需要对网络有一定的理解&#xff0c;也需要对浏览器的机制以及前端的技术等有些许的了解&#xff0c;在这个过程中&#xff0c;阅读了《高性能网站建设指南…