当前位置: 首页 > news >正文

设计网站推荐什么主题正能量无遮掩图片全屏

设计网站推荐什么主题,正能量无遮掩图片全屏,青白江做网站的公司,滁州seo排名【华为OD-E卷 - 热点网站统计 100分(python、java、c、js、c)】 题目 企业路由器的统计页面,有一个功能需要动态统计公司访问最多的网页URL top N。请设计一个算法,可以高效动态统计Top N的页面 输入描述 每一行都是一个URL或…

【华为OD-E卷 - 热点网站统计 100分(python、java、c++、js、c)】

题目

企业路由器的统计页面,有一个功能需要动态统计公司访问最多的网页URL top N。请设计一个算法,可以高效动态统计Top N的页面

输入描述

  • 每一行都是一个URL或一个数字,如果是URL,代表一段时间内的网页访问; 如果是一个数字N,代表本次需要输出的Top N个URL。

输入约束:

1、总访问网页数量小于5000个,单网页访问次数小于65535次; 2、网页URL仅由字母,数字和点分隔符组成,且长度小于等于127字节; 3、数字是正整数,小于等于10且小于当前总访问网页数

输出描述

  • 每行输入要对应一行输出,输出按访问次数排序的前N个URL,用逗号分隔。

输出要求:

1、每次输出要统计之前所有输入,不仅是本次输入; 2、如果有访问次数相等的URL,按URL的字符串字典序升序排列,输出排序靠前的URL

用例

用例一:
输入:
news.qq.com
news.sina.com.cn
news.qq.com
news.qq.com
game.163.com
game.163.com
www.huawei.com
www.cctv.com
3
www.huawei.com
www.cctv.com
www.huawei.com
www.cctv.com
www.huawei.com
www.cctv.com
www.huawei.com
www.cctv.com
www.huawei.com
3
输出:
news.qq.com,game.163.com,news.sina.com.cn
www.huawei.com,www.cctv.com,news.qq.com
用例二:
输入:
news.qq.com
www.cctv.com
1
www.huawei.com
www.huawei.com
2
3
输出:
news.qq.com
www.huawei.com,news.qq.com
www.huawei.com,news.qq.com,www.cctv.com

python解法

  • 解题思路:
  • 这段代码实现了一个简单的 URL 计数器,能够实时统计 URL 的访问次数,并按要求输出访问次数最多的 URL。以下是具体功能和解题思路:

URL 统计功能:使用 Python 的 collections.Counter 数据结构对输入的 URL 进行计数。Counter 是一个专门用于计数的字典,键是 URL,值是对应 URL 出现的次数。

按条件输出:

如果输入的是一个数字 n,输出访问次数最高的前 n 个 URL。
如果输入的是一个 URL,则更新该 URL 的计数。
排序逻辑:

先按访问次数从高到低排序。
如果访问次数相同,则按 URL 的字典序排列。
输入与退出:

程序通过循环接受用户的输入。
遇到 EOFError(如用户使用 Ctrl+D 或 Ctrl+Z)时,退出程序

from collections import Counter  # 导入 Counter 用于统计 URL 的出现次数# 创建一个 Counter 对象,用于统计 URL 访问次数
url_counter = Counter()# 定义一个函数,用于获取访问次数最多的前 n 个 URL
def get_top_n_urls(n):# 将 URL 按访问次数降序排序,如果次数相同按字典序升序排列sorted_urls = sorted(url_counter.items(), key=lambda x: (-x[1], x[0]))# 提取前 n 个 URL,并用逗号连接成字符串返回return ",".join(url for url, _ in sorted_urls[:n])try:# 循环不断读取用户输入while True:input_value = input().strip()  # 去掉输入的前后空格if input_value.isnumeric():  # 如果输入的是纯数字# 将输入转换为整数并获取访问次数最多的前 n 个 URLprint(get_top_n_urls(int(input_value)))else:  # 如果输入的是一个字符串(假设是 URL)# 更新该 URL 的访问次数url_counter[input_value] += 1
except EOFError:# 遇到 EOFError(如用户按 Ctrl+D 或 Ctrl+Z)时退出程序pass

java解法

  • 解题思路
  • 这段代码实现了一个实时统计 URL 访问次数的功能,同时可以根据用户输入的数量 n 输出访问次数最多的前 n 个 URL。以下是解题步骤和逻辑:

数据存储与统计:

使用 TreeMap 存储 URL 及其对应的访问次数,TreeMap 会按键的字典序自动排序,方便管理和检索。
URL 的访问次数通过 getOrDefault 方法更新。
获取访问次数最多的 URL:

使用 PriorityQueue(优先队列)对 TreeMap 的 entrySet 进行排序。
排序规则:
优先按访问次数降序排列。
如果访问次数相同,则按 URL 的字典序升序排列。
最终输出按排序规则选取的前 n 个 URL。
输入处理:

如果输入是数字,调用 getTopN 方法输出结果。
如果输入是 URL,更新 URL 访问次数。
异常处理:

在 isNumeric 方法中捕获非数字输入的异常,确保程序不会因为非法输入而崩溃

import java.util.*;public class Main {// 用 TreeMap 存储 URL 和其访问次数,按字典序自动排序static Map<String, Integer> urlCount = new TreeMap<>();// 用 PriorityQueue 实现访问次数和字典序的自定义排序static PriorityQueue<Map.Entry<String, Integer>> pq;public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 循环读取用户输入while (sc.hasNextLine()) {String input = sc.nextLine();// 如果输入是数字if (isNumeric(input)) {int n = Integer.parseInt(input); // 将输入转换为整数System.out.println(getTopN(n)); // 获取访问次数最多的 n 个 URL} else {// 如果输入是 URL,更新其访问次数urlCount.put(input, urlCount.getOrDefault(input, 0) + 1);}}}/*** 获取访问次数最多的前 n 个 URL** @param n 前 n 个 URL* @return 按要求排序的前 n 个 URL,使用逗号分隔*/private static String getTopN(int n) {// 定义优先队列,按访问次数降序排列,如果次数相同按字典序升序pq = new PriorityQueue<>((a, b) -> {if (!a.getValue().equals(b.getValue())) {return b.getValue() - a.getValue(); // 按访问次数降序} else {return a.getKey().compareTo(b.getKey()); // 按字典序升序}});// 将 TreeMap 中的所有条目加入优先队列pq.addAll(urlCount.entrySet());// 使用 StringJoiner 拼接结果StringJoiner sj = new StringJoiner(",");for (int i = 0; i < n && !pq.isEmpty(); i++) {sj.add(pq.poll().getKey()); // 取出队列中最优先的 URL}return sj.toString();}/*** 判断字符串是否为数字** @param str 输入字符串* @return 如果是数字返回 true,否则返回 false*/private static boolean isNumeric(String str) {try {Integer.parseInt(str); // 尝试将字符串转换为整数return true;} catch (NumberFormatException e) {return false; // 转换失败说明不是数字}}
}

C++解法

  • 解题思路
更新中

C解法

  • 解题思路

更新中

JS解法

  • 解题思路

  • 这段代码用 Node.js 实现了一个实时统计 URL 访问次数的功能,可以根据用户输入的数字 n 输出访问次数最多的前 n 个 URL。以下是代码的解题思路:

数据结构选用:

使用对象 urlVisits 存储 URL 和对应的访问次数。
urlVisits 的键为 URL,值为该 URL 的访问次数。
输入处理:

如果输入是 URL,则更新 urlVisits 中对应 URL 的访问次数。
如果输入是数字,则按规则排序并输出访问次数最多的前 n 个 URL。
排序规则:

按访问次数降序排序。
如果访问次数相同,按字典序升序排序。
异步输入:

使用 Node.js 的 readline 模块实现异步输入,允许用户连续输入。
输出处理:

将排序后的前 n 个 URL 提取并用逗号拼接输出

// 使用 readline 模块处理用户输入
const readline = require("readline").createInterface({ input: process.stdin });// 创建一个异步迭代器用于读取输入
const iterator = readline[Symbol.asyncIterator]();// 定义一个异步函数来获取输入
const getInput = async () => (await iterator.next()).value;(async function () {// 用对象存储 URL 和访问次数const urlVisits = {};// 异步循环处理输入while ((input = await getInput())) {// 将输入尝试转换为数字const number = parseInt(input);if (isNaN(number)) {// 如果输入不是数字,视为 URL,更新访问次数urlVisits[input] = (urlVisits[input] ?? 0) + 1;continue;}// 如果输入是数字,按规则排序并输出前 n 个 URLconst result = Object.entries(urlVisits) // 将对象转为 [key, value] 数组.sort((first, second) => second[1] - first[1] || // 先按访问次数降序排序first[0].localeCompare(second[0]) // 再按字典序升序排序).slice(0, number) // 获取前 n 个元素.map((item) => item[0]) // 提取 URL.join(","); // 拼接成逗号分隔的字符串console.log(result); // 输出结果}
})();

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

http://www.yayakq.cn/news/303634/

相关文章:

  • php网站源代码修改工业品企业网站源码
  • 公司做网站还是做app网站建设价格方案
  • 网站建设对企业的好处vshtml5网站开发
  • h5成品网站wordpress进行分类目录搜索
  • 做淘宝网站怎么弄的项目计划书的六大要素
  • 热门网站开发公司截留占用住宅专项维修资金的整治方案
  • html做的网站怎么发布公司怎么建立网站吗
  • 怎么促成客户做网站道外网站建设
  • 网站平台建设的重要性做网站作业
  • 网站建设选哪个好外贸买家网站
  • 在兔展上怎么做网站页面自适应的网站
  • 做网站建设出路在哪里重庆市建设工程信息网络
  • 厦门微网站建设公司哪家好北京丰台区做网站公司
  • 那里可以做网站怎么购买网站空间和域名
  • 服装行业网站模板wordpress 添加幻灯片
  • 婚纱设计网站首页竞价推广教程
  • 台州宇洋台州网站建设自做闪图网站
  • 网站建设的规划书巩义网站建设费用
  • 如何做网站信息深圳小程序搭建
  • 网站空间流量6g网站菜单导航怎么做的
  • dw手机网站建设常见的网站开发工具
  • 免费建站平台的源码廊坊建设网站的公司
  • 上海站优云网络科技有限公司dedecms迁移wordpress
  • 重庆网站建设公司海口asp网站如何建设
  • 深圳模板网站建设哪家好芒果tv网站建设的目标
  • 网站备案可以强制撤销吗北京酷站科技有限公司
  • 东城网站设计wordpress 菜单 首页
  • 网站专题二级页怎么做wordpress内存
  • 龙华营销型网站建设如何选择郑州网站建设
  • 优秀网站展示曹县网站建设