力扣周赛310场题解
力扣周赛310场题解
- 前言
- 6176. 出现最频繁的偶数元素
- 6177. 子字符串的最优划分
前言
今天参加了力扣的第310场周赛,也是感觉到了这周的题的一个难度,有些题有想法,但是实际上让我去写的时候还是不知道该怎么下手,这周也算是对算法练习的一个总结吧,确实,赛场时间段内没AC出来一道,但是当下午自己再做的时候,很容易就AC了两道,剩下两道也是有点难度,正在研究,那今天就先分享两道吧,加油!
6176. 出现最频繁的偶数元素
给你一个整数数组 nums ,返回出现最频繁的偶数元素。
如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1 。
示例 1:
输入:nums = [0,1,2,2,4,4,1]
输出:2
解释:
数组中的偶数元素为 0、2 和 4 ,在这些元素中,2 和 4 出现次数最多。
返回最小的那个,即返回 2 。
示例 2:
输入:nums = [4,4,4,9,2,4]
输出:4
解释:4 是出现最频繁的偶数元素。
示例 3:
输入:nums = [29,47,21,41,13,37,25,7]
输出:-1
解释:不存在偶数元素。
提示:
1 <= nums.length <= 2000
0 <= nums[i] <= 105
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/most-frequent-even-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法:排序 + HashMap
排序,使数组有序,就算出现相同次数的偶数,返回的也是前面的,只需要比较出现的次数,如果相同就返回最小的即可。
使用Map来记录偶数出现的次数,同时也可以过滤奇数。最后筛选只需要使用map中的元素即可。
class Solution {public int mostFrequentEven(int[] nums) {Arrays.sort(nums); // 排序Map<Integer,Integer> map = new HashMap<>();for(int i : nums) {if(i % 2 == 0) { // 过滤掉所有奇数map.put(i, map.getOrDefault(i, 0) + 1);}}int res = -1,max = Integer.MIN_VALUE;for (Integer key : map.keySet()) {int value = map.get(key);if (value > max) { // 如果出现次数大于前一个出现的次数// 更新记录max = value;res = key;} else if (value == max) {// 如果出现次数相等,那么取最小的元素res = Math.min(res,key);}}return res;}
}
6177. 子字符串的最优划分
给你一个字符串 s ,请你将该字符串划分成一个或多个 子字符串 ,并满足每个子字符串中的字符都是 唯一 的。也就是说,在单个子字符串中,字母的出现次数都不超过 一次 。
满足题目要求的情况下,返回 最少 需要划分多少个子字符串。
注意,划分后,原字符串中的每个字符都应该恰好属于一个子字符串。
示例 1:
输入:s = "abacaba"
输出:4
解释:
两种可行的划分方法分别是 ("a","ba","cab","a") 和 ("ab","a","ca","ba") 。
可以证明最少需要划分 4 个子字符串。
示例 2:
输入:s = "ssssss"
输出:6
解释:
只存在一种可行的划分方法 ("s","s","s","s","s","s") 。
提示:
1 <= s.length <= 105
s 仅由小写英文字母组成
解法一:Set集合 + 一次遍历
我们可以使用Set集合来决定一个子串是否含有重复的字符。
class Solution {public int partitionString(String s) {char[] chars = s.toCharArray();Set<Character> set = new HashSet<>();// 这里初始化为1是因为,如果最后一次没有重复的字符的话// 不会执行if里面的逻辑int count = 1;for(int i = 0; i < chars.length; i++) {// 如果添加失败,说明重复if(!set.add(chars[i])) {// 清空set集合set.clear();// 将当前字符加入set集合set.add(chars[i]);// 次数 + 1count++;}}return count;}
}
力扣周赛310场题解相关推荐
- 力扣周赛337场 第一题6319.奇偶位数
#include<stdio.h> #include<math.h> void binary(int num); int i=0,j,arr[32]={0}; int main ...
- 20210530:力扣第53场双周赛题解
力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...
- 20201015:力扣第210场周赛题解(上)
力扣第210场周赛题解上 题目 思路与算法 代码实现 写在最后 题目 括号的最大嵌套深度 最大网络秩 思路与算法 第一题典型的栈数据结构求最大栈长的题目 第二题是一个经典的出入度题目,本题更加简单,统 ...
- 20220219:力扣第72场双周赛题解
力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...
- 20201125:力扣第216场周赛(下)
力扣第216场周赛(下) 题目 思路与算法 代码实现 写在最后 题目 生成平衡数组的方案数 完成所有任务的最少初始能量 思路与算法 第一题 删除的索引为i,删除之后(0- i-1)之间的子数组的奇偶和 ...
- 20201023:力扣第37场双周赛(上)
力扣第37场双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 删除某些元素后的数组均值 网络信号最好的坐标 思路与算法 第二题直接暴力就可以了,计算每个点的所有偏移量存入list,即以(0,0 ...
- 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)
第 256 场力扣周赛 有事没做,来看一下题 5854. 学生分数的最小差值 题目描述 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整 ...
- 20220307:力扣第283场周赛(上)
力扣第283场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 Excel 表中某个范围内的单元格 向数组中追加 K 个整数 思路与算法 第一题直接模拟即可,注意作为char的数字也是可以直接自 ...
- 20220228:力扣第282场周赛(下)
力扣第282场周赛(下) 题目 思路与算法 代码实现 写在最后 题目 完成旅途的最少时间 完成比赛的最少时间 思路与算法 完成旅途的最少时间: 二分模板题,注意初始化左右边界的话,速度会提升很多. 完 ...
最新文章
- android xUtils的使用
- java中引用类型_您真的了解Java中的4种引用类型吗?
- JVM加载class文件的原理机制
- squid反向代理(实现缓存)加速web
- C++ Vector 汇总
- c++ 服务 以当前用户拉起进程_渗透技巧——通过CredSSP导出用户的明文口令
- python拆开tuple为多个值传入函数(tuple拆包)
- V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)...
- php中的echo单引号_PHP 邮件漏洞小结
- JQuery Mobile - 固定住页面和页脚
- Visio做图时背景有虚线
- 【HTML基础】第一课、Web前端的概述
- [翻译] Anders Hejlsberg访谈录——Geek of the Week
- 【笔记】linux下查看文件夹大小
- [可视化] 点云可视化工具open3d的使用
- java读取pdf三维图片_java 读取PDF文件生成图片形式
- LCP 02. 分式化简
- 笑话(4) 猪八戒的最后情书
- 软件过程-喷泉模型和统一过程模型RUP
- Matlab安装下载的工具箱