LeetCode第354场周赛

题目一 特殊元素平方和

给你一个下标从 1 开始、长度为 n 的整数数组 nums 。
对 nums 中的元素 nums[i] 而言,如果 n 能够被 i 整除,即 n % i == 0 ,则认为 num[i] 是一个 特殊元素 。
返回 nums 中所有 特殊元素 的 平方和 。

直接模拟就好了

class Solution {public int sumOfSquares(int[] nums) {int n = nums.length;List<Integer> l = new ArrayList<>();for (int i=0; i<n; ++i) {if (n % (i+1) == 0) {l.add(nums[i]);}}int sum = 0;for (int i: l) {sum += (i*i);}return sum;}
}

题目二 数组的最大美丽值

给你一个下标从 0 开始的整数数组 nums 和一个 非负 整数 k 。
在一步操作中,你可以执行下述指令:

  • 在范围 [0, nums.length - 1] 中选择一个 此前没有选过 的下标 i 。
  • 将 nums[i] 替换为范围 [nums[i] - k, nums[i] + k] 内的任一整数。

数组的 美丽值 定义为数组中由相等元素组成的最长子序列的长度。
对数组 nums 执行上述操作任意次后,返回数组可能取得的 最大 美丽值。
注意:你 只 能对每个下标执行 一次 此操作。
数组的 子序列 定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。

class Solution {// 因为是子序列,所以可以排序// 因为将nums[i]替换为左右为k得数,所以我们选择得肯定为一个连续序列// 则此时我们要寻找一个子数组// 子数组的最大值-最小值 <= 2*kpublic int maximumBeauty(int[] nums, int k) {Arrays.sort(nums);int left = 0; // 左闭右闭int right = 0;int ans = 0;while (right < nums.length && left <= right) {if (nums[right] - nums[left] <= 2*k) {ans = Math.max(ans, right - left + 1);right++;} else {left++;}}return ans;}
}

同时我们也可以使用 差分数组 来表示各数的频率,其中频率最高的即为最终所求

2780. 合法分割的最小下标

如果元素 x 在长度为 m 的整数数组 arr 中满足 freq(x) * 2 > m ,那么我们称 x 是 支配元素 。其中 freq(x) 是 x 在数组 arr 中出现的次数。注意,根据这个定义,数组 arr 最多 只会有 一个 支配元素。

给你一个下标从 0 开始长度为 n 的整数数组 nums ,数据保证它含有一个支配元素。

你需要在下标 i 处将 nums 分割成两个数组 nums[0, …, i] 和 nums[i + 1, …, n - 1] ,如果一个分割满足以下条件,我们称它是 合法 的:

  • 0 <= i < n - 1
  • nums[0, …, i] 和 nums[i + 1, …, n - 1] 的支配元素相同。

这里, nums[i, …, j] 表示 nums 的一个子数组,它开始于下标 i ,结束于下标 j ,两个端点都包含在子数组内。特别地,如果 j < i ,那么 nums[i, …, j] 表示一个空数组。

请你返回一个 合法分割 的 最小 下标。如果合法分割不存在,返回 -1 。

思路

我们首先声明两个map,一个用于记录左侧子数组的频率left,一个用于记录右侧right。在最初时,我们设分割点idx-1,也即 left为空,right记录整个数组的频率。
然后我们从左向右移动分割点idx,并更新leftright,同时判断被更新的点是否满足freq(x) * 2 > m并判断相等

class Solution {public int minimumIndex(List<Integer> nums) {Map<Integer, Integer> left = new HashMap<>();Map<Integer, Integer> right = new HashMap<>();for (int i=0; i<nums.size(); ++i) {right.put(nums.get(i), right.getOrDefault(nums.get(i), 0)+1);}int ans = 0;for (int i=0; i<nums.size(); ++i) {left.put(nums.get(i), left.getOrDefault(nums.get(i), 0)+1);right.put(nums.get(i), right.getOrDefault(nums.get(i), 0)-1);int l = left.getOrDefault(nums.get(i), 0);int r = right.getOrDefault(nums.get(i), 0);if (l*2 > i+1 && r*2 > nums.size()-i-1) {return i;}}return -1;}
}

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

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

相关文章

C/C++内存泄漏原因分析与应对方法

内存泄漏 一、内存泄漏的危害&#xff1a; 内存泄漏会导致当前应用程序消耗更多的内存&#xff0c;使得其他应用程序可用的内存更少了。 如果有个进程可用的内存不够&#xff0c;就会触发Linux操作系统的直接/后台内存回收&#xff08;即将一些内存页的数据写到磁盘里&#…

springboot服务端接口公网远程调试,并实现HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

Argo CD 入门扫盲使用

目录 一、什么是 argo cd 二、为什么使用 argo cd 三、argo cd 架构图 四、Argo CD 使用 1、安装 Argo CD 2、安装 Argo CD CLI 3、发布 Argo CD 服务 4、获取 Argo CD 密码 5、准备 Git 仓库 6、创建 Argo CD App 7、版本升级 8、版本回滚 一、什么是 argo cd A…

K210开发实例-通用异步收发传输器(UART)使用

通用异步收发传输器(UART)使用 文章目录 通用异步收发传输器(UART)使用1、UART介绍2、UART驱动API介绍3、UART通用使用方式4、UART中断方式使用5、UART通过DMA接收发送数据6、UART通过DMA及中断方式接收发送数据1、UART介绍 UART分为高速UART和通用UART。 高速UART为UARTHS(U…

数据结构(王道)——线性表的存储结构之循环表

一、循环单链表 定义&#xff1a; 循环单链表代码实现 创建并初始化、判断循环单链表是否为空、判断结点p是否为循环单链表的表尾结点的代码操作。 二、循环双链表 定义&#xff1a; 循环双链表代码实现 创建并初始化、判断循环双链表是否为空、判断结点p是否为循环双链表的…

Java使用Stream流

在实际的开发工作中&#xff0c;集合是我们非常常用的一种。 当我们想对集合内的对象加工时&#xff0c;你是不是首先想到了for循环&#xff1f; 其实在java8以后&#xff0c;引入的Stream流&#xff0c;同时搭配lambda的使用&#xff0c;可以支持一系列复杂的操作&#xff0c…

JVM重点整理

一、虚拟机架构图 二、类加载过程 类加载器的作用&#xff1a;负责把class文件加载到内存中 类加载过程&#xff1a; 加载&#xff1a; 通过类的全限定名获取此类的二进制字节流文件的编码结构---->运行时的内存结构内存中生成一个class对象 链接&#xff1a; 验证&#x…

智能电表远程抄表系统原理

智能电表远程抄表系统是现代智能电网建设的重要组成部分&#xff0c;它利用物联网技术实现电表数据的远程采集、传输和处理&#xff0c;提高了电力公司的抄表效率&#xff0c;同时也为用户提供了更加便捷、准确的用电服务。本文将从远程智能电表抄表系统的工作原理、特点、应用…

每天一道C语言编程:排队买票

题目描述 有M个小孩到公园玩&#xff0c;门票是1元。其中N个小孩带的钱为1元&#xff0c;K个小孩带的钱为2元。售票员没有零钱&#xff0c;问这些小孩共有多少种排队方法&#xff0c;使得售票员总能找得开零钱。注意&#xff1a;两个拿一元零钱的小孩&#xff0c;他们的位置互…

精益生产有哪些管理工具?

精益生产有哪些管理工具&#xff1f; 一、什么是精益生产 智能制造是落实我国制造强国战略的重要举措&#xff0c;加快推进智能制造&#xff0c;是加速我国工业化和信息化深度融合、推动制造业供给侧结构性改革的重要着力点&#xff0c;对重塑我国制造业竞争新优势具有重要意义…

优化类问题建模解析

模型建立阶段 线性规划模型&#xff1a;目标函数和约束条件均为线性 整数规划或0-1规划&#xff1a;决策变量取值被限制为整数或0、1 动态优化模型&#xff1a;以时间为划分阶段的动态过程优化问题 非线性规划模型&#xff1a;目标函数或约束条件中包括非线性函数 多目标规划模…

创新力驱动:代理IP、Socks5代理、SK5代理与网络安全的新潮流

代理IP、Socks5代理和SK5代理作为关键的网络通信技术&#xff0c;不断演进与创新。本文将介绍这些技术的创新应用&#xff0c;包括智能化代理、区块链安全和边缘计算&#xff0c;探索它们在网络安全领域的新潮流和未来发展方向。 【第一部分&#xff1a;智能化代理的崛起】 智…

Robot Framework高阶功能介绍

Robot Framework高阶功能包括以下内容&#xff1a; 自定义关键字库&#xff1a;可以根据自己的需求编写自定义的关键字库&#xff0c;使得测试用例更加灵活。 数据驱动测试&#xff1a;可以通过使用不同的数据来执行同一个测试用例&#xff0c;提高测试用例的复用性和效率。 …

超高性能协议框架fury完爆protostuff(附性能测试对比)

简单介绍: 序列化框架是系统通信的基础组件&#xff0c;在大数据、AI 框架和云原生等分布式系统中广泛使用。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时&#xff0c;都需要进行序列化&#xff0c;其性能和易用性影响运行效率和开发效率。 Fury 是一个基于…

SSH服务(二十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、特点 三、身份验证机制 四、验证过程 五、加密机制 六、基本参数 ​七、 身份验证机制 八、基本操作 1. ssh 2. scp 3. sftp 4. 密钥对验证 总结 前…

人工智能商业变现途径,并介绍详细公司案列

目录 1. 推荐系统&#xff1a;2. 智能广告和营销&#xff1a;3. 聊天机器人和虚拟助手&#xff1a;4. 自动化和机器人化&#xff1a;5. 数据分析和预测&#xff1a;6. 机器视觉和图像识别&#xff1a;7. 金融科技&#xff08;FinTech&#xff09;&#xff1a;8. 医疗诊断和健康…

m4a文件出现损坏应该如何修复?

M4A文件&#xff0c;也称为Apple Lossless Encoder&#xff0c;是一种类似于MP4文件的音频格式。它们之间唯一的区别是M4A文件里面没有视频。作为一个音频文件&#xff0c;它已被广泛使用&#xff0c;常用的Windows&#xff0c;Media Player&#xff0c;Mac quicktime和iTunes等…

【MongoDB实战】数据备份与恢复(部分迁移)

场景&#xff1a; 需求&#xff1a; 解决方案&#xff1a; 步骤&#xff1a; Stage 1&#xff1a;【生产环境】修改备份文件映射 Stage 2&#xff1a;【生产环境】重新构建mongodb Stage 3&#xff1a;【客户环境】修改备份文件映射&#xff0c;同 Stage 1 Stage 4&…

九五从零开始的运维之路(其二十)

[TOC](文章目录) 文章目录 前言一、LAMP是什么二、配置环境及安装1.配置yum源2.关闭防火墙、网络图形化工具及SElinux3.安装软件包 三、配置apache服务器内容四、启动服务五、访问验证总结 前言 本篇将简述的内容&#xff1a;Linux系统下的LAMP平台部署 基于discuz框架的论坛搭…

用WooCommerce创建一个多用户商城系统和多供应商市场

线上市场是下一波数字化商务。2020 年&#xff0c;超过60% 的线上支出是通过数字市场发生的。人们喜欢从市场上购物&#xff0c;因为它们使购物变得容易。出于同样的原因&#xff0c;企业喜欢通过它们进行销售。通过多用户商城系统和多供应商WooCommerce商城设置&#xff0c;每…