面试题 17.05. 字母与数字
创始人
2024-06-01 15:08:24
0

题目链接

面试题 17.05. 字母与数字 mid

题目描述

给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。

返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。

示例 1:

输入: [“A”,“1”,“B”,“C”,“D”,“2”,“3”,“4”,“E”,“5”,“F”,“G”,“6”,“7”,“H”,“I”,“J”,“K”,“L”,“M”]
输出: [“A”,“1”,“B”,“C”,“D”,“2”,“3”,“4”,“E”,“5”,“F”,“G”,“6”,“7”]

示例 2:

输入: [“A”,“A”]
输出: []

提示:

  • array.length≤100000array.length \leq 100000array.length≤100000

分析:前缀和 + 哈希表

我们可以将 字母看作是 +1,数字看作是 -1,那么原问题就转换为 求最长的一段和 sum = 0的子数组

我们用一个哈希表 m来记录遍历过的 前缀和 s[i]和它对应的下标 i

如果当前遍历到了 s[j],并且 m存在 s[j]这个键。由此,我们可以得到 i = m[s[j]]。那么 (i , j]这一段就是和为 0

的子数组,我们就将答案更新即可。

我们用 idx代表最长的那段子数组的起始下标,用 len表示最长的那段子数组的长度。

最后返回 array的这一段 [idx , idx + len]即可。

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

C++代码:

class Solution {
public:vector findLongestSubarray(vector& arr) {int n = arr.size();unordered_map m{{0,-1}};int idx = 0 , len  = 0;for(int j = 0 ,s = 0;j < n;j++){s += (arr[j][0] >= 'A' ? 1 : -1);if(m.count(s)){int i = m[s];if(j - i > len){len = j - i;idx = i + 1;}}else m[s] = j;}return vector (arr.begin() + idx,arr.begin() + idx + len);}
};

Python代码:


class Solution:def findLongestSubarray(self, arr: List[str]) -> List[str]:m = {0:-1}s = idx = len = 0for j,str in enumerate(arr):s += 1 if str.isalpha() else -1if s in m:i = m[s]if len < j - i:idx = i + 1len = j - ielse:m[s] = j    return arr[idx:idx+len]

相关内容

热门资讯

北京今晨和夜间有轻雾,最高气温... 转自:北京日报客户端北京市气象台10日6时发布:今天白天多云间晴,早晨有轻雾,北转南风二级左右,最高...
一叶孤舟欲佛没写完吗 一叶孤舟欲佛没写完吗一叶孤舟欲佛没写完。因为作者贺睁家中有事而断更了。欲佛》是一叶孤舟所写的一本玄幻...
老婆要离婚怎么办? 老婆要离婚怎么办?如果不想离婚,那就先总结下到底什么原因导致妻子必须离婚。可以从原因上入手,跟妻子好...
武汉首次全城征集! 转自:武汉发布一起来看看上周武汉这些部门都有哪些新闻↓↓↓全城征集智能体3月8日,《市经信局关于开展...
我省已建立防火网格4.2万个防... 从3月10日开始,辽宁省正式进入森林防火紧要期。预计未来一周我省的天气趋势总体呈现气温偏高、降水偏少...
福特福克斯与马自达6停产,St... 每经记者 董天意    实习生 周卓孜    每经实习编辑 余婷婷     | 2...
坏女孩的歌词背后的故事(别太长... 坏女孩的歌词背后的故事(别太长)重点说一说他们分手后的故事拜托啦!分手之后,女孩变坏了,彼此还是深爱...
胸怀大局为学生成长无私奉献 沈阳市第八十三中学 赵莹 在教育的广阔天地里,总有一些人以非凡的热情和不懈的努力,成为学生成长道路上...
军事专家解读解放军和武警部队代... 转自:千龙网十四届全国人大三次会议解放军和武警部队代表团新闻发言人吴谦昨天(9日)就中国国防费预算答...
事务所宣布石原里美正式结婚,已... 事务所宣布石原里美正式结婚,已于去年领证,男方是谁?圈外人,所以石原里美也没有公开过,可能是不想。
描写英雄人物的成语 描写英雄人物的成语急!描写英雄人物的成语 一马当先 一身正气 万夫不当 无所畏惧 气冲牛斗 气冲霄...
秘密用英语说 秘密用英语说secret 秘密confidential 机密的
守门员装备推荐! 守门员装备推荐!球鞋球袜护腿板,你觉得需要不?土地啊。。。。注意安全吧,能不扑就别扑,注意安全。建议...
白色的,触角很长,会飞,会发出... 白色的,触角很长,会飞,会发出声音是什么昆虫?这不是天牛吗
九天之外重九天是什么意思? 九天之外重九天是什么意思?就是“天外有天”的另一个版本和说法
邻座是什么意思 邻座是什么意思邻座的解释 [adjacent seat] (坐的或站的)紧靠另外一人或在其附近的位...
你喜欢什么样的人? 你喜欢什么样的人?当然喜欢聪明伶俐,善良有孝心,条件好一些的人呐,这样的人能给你带来一生的幸福和快乐...
初三学生在文艺汇演中跳什么舞蹈... 初三学生在文艺汇演中跳什么舞蹈最好 希望有教学视频群舞风酥雨忆。个人比较喜欢.音乐很好听
专八考试是不是只有一次机会? 专八考试是不是只有一次机会?对,应为专八都是在大四下半学期考,而且一定是在校生。。。所以,只有一次我...
口感不输“茅五剑”,却因为包装... 口感不输“茅五剑”,却因为包装无人问津的5种酒是什么?一、54度鸭溪窖酒,二、50度枝江大曲,三、5...