力扣面试题 17.05. 字母与数字

这一道题和
力扣525.连续数组

思路一模一样。

都是把其中一种看作-1,另一种看作1,这样转化为找前缀和为0的子数组,比较简单,哈希表+前缀和解决

c++class 复制代码
public:
  int sum[100005];
unordered_map<int,int> mp;
vector<string> findLongestSubarray(vector<string>& array) {
        for(int i=0;i<array.size();i++)
        {
        	if(array[i][0]>='0'&&array[i][0]<='9')
        	{
        		sum[i+1]=sum[i]-1;
			}
			else
			{
				sum[i+1]=sum[i]+1;
			}
        
		}
		mp[0]=0;
		int l=0;
		int r=0;
		int llmax=0;
		int rrmax=0;
		int maxx=0;
		for(int j=1;j<=array.size();j++)
		{
			if(mp.count(sum[j]))
			{
				r=j;
				l=mp[sum[j]];
				if(r-l>maxx)
				{
					maxx=r-l;
					llmax=l;
					rrmax=r;
				}
			}
			else
			{
				mp[sum[j]]=j;
			}
		}
      
        return vector<string>(array.begin()+llmax,array.begin()+rrmax);
        
        
        
    }
};

但这一道题要注意的是返回值,如上代码写,比较方便,应该掌握

时间复杂度O(n)

相关推荐
式51611 分钟前
线性代数(八)非齐次方程组的解的结构
线性代数·算法·机器学习
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——翻转对
算法·排序算法·结构与算法
叠叠乐1 小时前
robot_state_publisher 参数
java·前端·算法
hweiyu001 小时前
排序算法:冒泡排序
算法·排序算法
brave and determined1 小时前
CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
人工智能·算法·机器学习·ai·开发环境·算子开发·昇腾ai
Dave.B2 小时前
用【vtk3DLinearGridCrinkleExtractor】快速提取3D网格相交面
算法·3d·vtk
一起养小猫2 小时前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
yaoh.wang2 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
Code Slacker2 小时前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode
brave and determined2 小时前
CANN训练营 学习(day8)昇腾大模型推理调优实战指南
人工智能·算法·机器学习·ai实战·昇腾ai·ai推理·实战记录