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

网站建设与管理自考本全国卷机构类网站有哪些

网站建设与管理自考本全国卷,机构类网站有哪些,哪些园林网站可以做外链,wordpress主题the 7特点-----------------第二天------------------------ 面试官 : 好的, 我们再来做个算法题吧。平时工作中会尝试用算法吗, 用到了什么数据结构? 3妹 : 有用到, 用到了 bla bla… 面试官 : 好的, 题目是这样的&#xff1…

image.png

-----------------第二天------------------------
image.png

面试官 : 好的, 我们再来做个算法题吧。平时工作中会尝试用算法吗, 用到了什么数据结构?
3妹 : 有用到, 用到了 bla bla…
面试官 : 好的, 题目是这样的:

题目:

给你一个下标从 0 开始的整数数组 nums 。

定义 nums 一个子数组的 不同计数 值如下:

令 nums[i…j] 表示 nums 中所有下标在 i 到 j 范围内的元素构成的子数组(满足 0 <= i <= j < nums.length ),那么我们称子数组 nums[i…j] 中不同值的数目为 nums[i…j] 的不同计数。
请你返回 nums 中所有子数组的 不同计数 的 平方 和。

由于答案可能会很大,请你将它对 109 + 7 取余 后返回。

子数组指的是一个数组里面一段连续 非空 的元素序列。

示例 1:

输入:nums = [1,2,1]
输出:15
解释:六个子数组分别为:
[1]: 1 个互不相同的元素。
[2]: 1 个互不相同的元素。
[1]: 1 个互不相同的元素。
[1,2]: 2 个互不相同的元素。
[2,1]: 2 个互不相同的元素。
[1,2,1]: 2 个互不相同的元素。
所有不同计数的平方和为 12 + 12 + 12 + 22 + 22 + 22 = 15 。
示例 2:

输入:nums = [2,2]
输出:3
解释:三个子数组分别为:
[2]: 1 个互不相同的元素。
[2]: 1 个互不相同的元素。
[2,2]: 1 个互不相同的元素。
所有不同计数的平方和为 12 + 12 + 12 = 3 。

提示:

1 <= nums.length <= 100
1 <= nums[i] <= 100

思路:

思考

1、使用哈希表统计各数字出现次数。
2、枚举每个元素,分别作为子数组的起始元素,每次步长递增1,使用列表记录步长的统计结果。
3、引用的方式,错位继承步长+1的结果。以{1,2,3}为例,起始元素为2且步长为1的结果,等于上一个起始元素1且步长为3的结果,并去掉元素1。

java代码:


class Solution {public int sumCounts(List<Integer> nums) {int sum = 0;int key = (int) (Math.pow(10, 9) + 7);int len = nums.size();// 按步长统计List<HashMap<Integer, Integer>> stepList = new ArrayList<>(len);// 枚举,各个元素分别作为子数组的起始元素for (int i = 0; i < len; i++) {// 步长递增for (int j = 0; i + j < len; j++) {int num = nums.get(i + j);HashMap<Integer, Integer> numCntMap = new HashMap<>();if (i == 0) {if (j == 0) {numCntMap.put(num, 1);} else {// 继承上一次步长-1的结果numCntMap.putAll(stepList.get(j - 1));if (numCntMap.containsKey(num)) {// 和上个元素重复numCntMap.put(num, numCntMap.get(num) + 1);} else {// 不重复numCntMap.put(num, 1);}}} else {if (j == 0) {sum = (sum + 1) % key;continue;} else {// 错位,继承步长+1的结果,并移除上一个元素// numCntMap.putAll(stepList.get(j + 1));// 优化:将putAll每次都要复制遍历全部,改为直接引用numCntMap = stepList.get(j + 1);int preNum = nums.get(i - 1);int preNumCnt = numCntMap.get(preNum);if (preNumCnt == 1) {numCntMap.remove(preNum);} else {numCntMap.put(preNum, preNumCnt - 1);}}}if (i == 0) {stepList.add(numCntMap);} else {// 更新stepList.set(j, numCntMap);}// 累加平方和sum = (sum + (int) (Math.pow(numCntMap.keySet().size(), 2))) % key;}}return sum;}
}
http://www.ritt.cn/news/13654.html

相关文章:

  • 京东客网站怎么做seo公司排名
  • 用html做企业门户网站seo人工智能
  • 如何给网站做右侧导航网页在线客服免费版
  • 天津智能网站建设价位广点通推广登录入口
  • 东营做网站哪里好网店推广是什么
  • 哪有做网站的 优帮云深圳建站公司
  • 做网站颜色类型是啥最新疫情19个城市封城
  • 怎么做网站教程长沙网站seo服务
  • 缙云建设局网上协同办公oa网站seo外链增加
  • 做网站基本流程友情链接交换系统
  • 政府网站设计方案书佛山本地网站建设
  • 做网站简单吗看网站搜什么关键词
  • 专业网站建设品牌策划广告
  • 环保类网站建设国家再就业免费培训网
  • 邯郸做网站找谁搜索引擎优化的含义
  • 企业网站建设免费武汉网络推广公司
  • 给菠菜网站做外包金华百度seo
  • 网络营销策划推广公司一一南昌seo专业团队
  • 专门做app网站博客seo优化技术
  • 公司法治企业建设seo管理
  • 做网站手机端需要pc端的源代码吗百度ocpc怎么优化
  • 网站建设项目安排计划表域名查询阿里云
  • 优秀简历制作网站百度网站推广申请
  • 杭州网站制怎么做网站推广
  • 站长素材ppt模板免费下载网站推广策划书模板
  • 学习资料黄页网站免费关键词排名优化方法
  • 做外包任务网站独立站seo实操
  • 商洛做网站想要推广网页
  • 用阿里云服务器做刷单网站seopc流量排行榜企业
  • 兰州专业做网站推广有奖励的app平台