2023.9.23 小米 软件工程师 JS 方向笔试
1.矩阵求和
由于每次只会对行和列进行操作,因此我们可以分别记录最新的行操作,最新的列操作。
在累加计算答案的时候,每次比较一下行和列的操作哪一个是最新的即可。
long long martixsum(int n,vector<vector<int>>&op)
{
vector<pair<int,int>>col(n+1,{0,0});
vector<pair<int,int>>line(n+1,{0,0});
int t=1;
for(auto c:op)
{
int type=c[0];
int index=c[1];
int val=c[2];
if(type==0)
{
col[index].first=val;
col[index].second=t++;
}else
{
line[index].first=val;
line[index].second=t++;
}
}
long long ans=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(col[i].second>line[j].second)ans+=col[i].first;
else ans+=line[j].first;
return ans;
}
2.字符串翻转
模拟题,从左往右模拟反转即可,每次碰到的新的字符和当前字符不同,说明前缀需要翻转。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;cin>>s;
long long ans=0;
for(int i=0;i+1<(int)s.size();i++)ans+=i+1;
cout<<ans<<endl;
return 0;
}
#小米##笔试#
途虎公司福利 103人发布