LeetCode-1796. 字符串中第二大的数字【哈希表,排序,双指针】
创始人
2024-03-14 14:34:32
0

LeetCode-1796. 字符串中第二大的数字【哈希表,排序,双指针】

  • 题目描述:
  • 解题思路一:数组+排序。思路简单,但是空间复杂度高。
  • 解题思路二:优化!集合自动排序且去重。
  • 解题思路三:直接遍历,双指针优化空间,在遍历过程中维护第一大(first)和第二大(second)的数。情况一:遇到大于first的数num,将first变为num,second变为first。情况二:遇到second

题目描述:

给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。

混合字符串 由小写英文字母和数字组成。

示例 1:

输入:s = “dfa12321afd”
输出:2
解释:出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。

示例 2:

输入:s = “abc1111”
输出:-1
解释:出现在 s 中的数字只包含 [1] 。没有第二大的数字。

提示:

1 <= s.length <= 500
s 只包含小写英文字母和(或)数字。
https://leetcode.cn/problems/second-largest-digit-in-a-string/

解题思路一:数组+排序。思路简单,但是空间复杂度高。

class Solution {
public:int secondHighest(string s) {vector nums;for(int i=0;i

时间复杂度:O(n)
空间复杂度:O(n)

解题思路二:优化!集合自动排序且去重。

class Solution {
public:int secondHighest(string s) {set a;for(auto c: s)if(isdigit(c)) a.insert(c-'0');if(a.size()<2)return -1;auto it=a.rbegin();return *++it;}
};

时间复杂度:O(n)
空间复杂度:O(n)

解题思路三:直接遍历,双指针优化空间,在遍历过程中维护第一大(first)和第二大(second)的数。情况一:遇到大于first的数num,将first变为num,second变为first。情况二:遇到second
class Solution {
public:int secondHighest(string s) {int first = -1, second = -1;for (auto c : s) {if (isdigit(c)) {int num = c - '0';if (num > first) {second = first;first = num;} else if (num < first && num > second) {second = num;}}}return second;}
};

时间复杂度:O(n)
空间复杂度:O(1)

相关内容

热门资讯

XR行业专利纠纷:事实、边界与... 近日,有媒体报道了关于AR眼镜厂商VITURE与XREAL之间的一起欧洲专利事件。 事情的直接起因,...
敦化市官地镇中心卫生院多举措织... 为切实提升辖区居民对医保政策的知晓率,扎实推进2026年城乡居民基本医疗保险缴费工作落地见效,近日,...
政策、金融、技术“三翼齐飞”,... 南都讯 记者朱唯信12月25日下午,2025粤港澳大湾区低空经济高质量发展大会“低空经济创新应用场景...
轻纺城:3.7亿拆迁补偿尾款未... 观点网讯:12月25日,浙江中国轻纺城集团股份有限公司发布关于国有土地上房屋征收尾款的进展公告。 公...
丽江旅拍协会将起诉小红书!拒绝... 近日,“丽江古城公开喊话小红书”引发关注。 小红书一直以来鼓励真诚、真实的经验分享,持续治理虚构...
掀桌了!曾起诉国家药监局的连锁... 12月23日,国内知名药店连锁养天和大药房通过官方视频号发声:“为维护行业健康生态,保障企业合法权益...
宁夏最新法规规定:不履行抚养义... 家庭是保护未成年人的第一道防线,家庭也是未成年人健康成长的温暖港湾。然而实际生活中,有些家长不重视家...
瑞茂通(600180)披露公司... 截至2025年12月25日收盘,瑞茂通(600180)报收于3.72元,较前一交易日下跌1.06%,...
巡回审判进校园 学生问了一连串... 河南日报客户端记者 李子耀 通讯员 李诗露 12月24日上午,信阳市新世纪职业学院的一间教室里,信阳...