最大前驱路径
最大前驱路径是什么呢?
比如, 用户在页面中的访问路径是 1,2,3,4 但是,用户不会按照正常设定好的路径进行访问, 用户的访问路径可能是 1,2,5,2 这时候,我们就要从访问路径中提取出 1,2,5
起始仔细观察发现也很简单, 思路如下:
- 输入 1,2,5
- 当再次输入 2 时,我们发现这是一个回退事件, 进行回退, 并处理本条路径 1,2,5, 完美
是不是很简单, 但是,路径肯定是不止一条的, 可能用户的访问路径是这样的, {1,2,3,5,3,4,3,2,1,6}, 那么对应的访问路径就是{1234,1235,16}, 画成树,如下:
按照刚才的思路,如何从这个序列中拿到我们想要的路径?
思路就是, 只要一发生回退事件,那就说明这条路径走到头了, 拿出来, 然后将序列置于回退事件的那个状态, 继续进行读入, 要避免连续回退事件输出同一条路径的情况, 这个加个状态就行.
代码实现
好, 话不多说, 道理很简单, 用代码来实现一下
是不是很简单, so easy!!!
扩展
当然, 肯定不是这么简简单单的处理, 对于序列的处理, 可以用一个树来进行保存, 最后生成的就是一个最大前驱路径的树
树中的节点, 也可以使用类, 将事件的状态也保存进去, 如点击次数,浏览时间等等
还有一种情况, 就是可以将回退事件的状态也加进去, 为了避免对已处理过的事件进行重复处理, 需要增加一个记录上次处理到状态序列下标的变量, 这样, 每次都将事件状态加到树中, 最后生成的最大前驱树, 同时也包含了各个节点的各种信息, 接下来, 对这些信息进行怎样的处理, 那就看你咯
具体的落地, 看具体需求吧, 也不好生搬硬套, 只是提供一个思路
才疏学浅, 若有说的不当的地方, 还望指出, 共同进步, 谢谢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY