news 2025/12/24 9:29:41

A.每日一题——3606. 优惠券校验器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A.每日一题——3606. 优惠券校验器

题目链接:3606. 优惠券校验器(简单)

算法原理:

解法:模拟

击败47.54%

时间复杂度O(Nlogn)

这题的思路非常简单,但是实现起来比较麻烦,感觉应该算个中等题,主要就是考察排序

记忆👇

1. 字符串比:compareTo ✅
什么词序、字典序、名称排序都用它
2. 数字比:用包装类的 compare ✅
Integer.compare(a, b)、Double.compare(a, b)
3. 其他基本类型:直接相减 ✅
char1 - char2、int1 - int2(小数值可用)

Java代码:

class Solution { public List<String> validateCoupons(String[] c, String[] b, boolean[] isActive) { int n=c.length; List<String> ret=new ArrayList<>(); String[][] tmp=new String[n][2]; for(int i=0;i<n;i++){ if(isc(c[i])&&isb(b[i])&&isActive[i]){ tmp[i][0]=c[i]; tmp[i][1]=b[i]; }else{ //标记为无效记录,防止空指针报错 tmp[i][0]=""; tmp[i][1]=""; } } Arrays.sort(tmp,(x,y)->{ //处理空记录:空记录排在最后 if(x[0].equals("")&&y[0].equals("")) return 0; if(x[0].equals("")) return 1;//x为空,x在后面 if(y[0].equals("")) return -1;//y为空,x在前面 //先比较品牌首字符 int tmpret=Character.compare(x[1].charAt(0),y[1].charAt(0)); if(tmpret!=0) return tmpret; //品牌首字母相同,再比较代码 return x[0].compareTo(y[0]); }); for(String[] t:tmp){ if(t[0].equals("")) continue; ret.add(t[0]); } return ret; } private boolean isc(String s){ for(char c:s.toCharArray()){ if(!(c>='a'&&c<='z')&&!(c>='A'&&c<='Z') &&!(c>='0'&&c<='9')&&!(c=='_')) return false; } return true; } private boolean isb(String s){ return (s.equals("electronics")||s.equals("grocery")||s.equals("pharmacy")||s.equals("restaurant")); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/14 1:46:46

C++起源与核心:版本演进+命名空间法

一、C的发展历史 -我们将C的发展史归纳为节点的形式展示 关键节点&#xff1a; 起源&#xff08;1979–1983&#xff09;&#xff1a;丹麦科学家本贾尼斯特劳斯特卢普在贝尔实验室开发“带类的 C 语言”&#xff0c;旨在为 C 语言添加面向对象特性&#xff0c;1983 年正式命…

作者头像 李华
网站建设 2025/12/14 1:46:17

时间序列分析

时间序列分析&#xff1a;从随机过程理论到 SARIMA 模型构建 一、 时间序列的数学定义与性质 1.1 随机序列与观察值 在数学上&#xff0c;时间序列不仅仅是一组数字&#xff0c;它是一个随机过程&#xff08;Stochastic Process&#xff09;。 设 TTT 为一个时间索引集合&#…

作者头像 李华
网站建设 2025/12/14 1:41:43

【Java数组】--告别困惑快速掌握数组

个人主页 文章目录 前言&#xff1a;1. 数组是什么1.1 数组的特性1.2 数组的内部结构1.3 数组的分类1.4 数组与集合的区别 2. 数组的定义2.1 数组的数学概念2.2 数组的索引机制2.3 数组的边界概念 3. 数组的声明与创建3.1 数组的声明方式3.2 声明与初始化的时机3.3 数组的创建3…

作者头像 李华
网站建设 2025/12/14 1:39:26

13、AWK与正则表达式:数据处理与文本匹配的强大工具

AWK与正则表达式:数据处理与文本匹配的强大工具 1. AWK命令基础 AWK是一个强大的数据处理工具,可用于从文件中过滤和显示内容,尤其适用于处理大文件。我们可以先打印整个文件,以熟悉命令语法,之后再将控制信息添加到AWK文件中,简化命令行操作。 打印整个文件 :使用以…

作者头像 李华
网站建设 2025/12/22 18:12:51

一文吃透随机森林:原理剖析+C++实战实现

哈喽&#xff0c;各位C开发者朋友&#xff01;今天咱们聚焦机器学习领域中经典的集成学习算法——随机森林。它凭借出色的泛化能力、抗过拟合特性以及对非线性数据的适配性&#xff0c;在分类、回归任务中都有着广泛应用&#xff0c;也是面试中的高频考点。这篇文章会从基础原理…

作者头像 李华