2485. 找出中枢整数
class Solution {
public:
int pivotInteger(int n) {
int s1=0,s2=0;
for(int i=1;i<=n;i++)
{
s1+=i;
s2=0;
for(int j=n;j>=i;j--)s2+=j;
if(s1==s2)
{
return i;
}
}
return -1;
}
};
2486. 追加字符以获得子序列
class Solution {
public:
int appendCharacters(string s, string t) {
int idx=0;
for(int i=0,j=0;i<s.size()&&j<t.size();i++)
{
if(s[i]==t[j])j++;
idx=j;
}
return t.size()-idx;
}
};
2487. 从链表中移除节点
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* removeNodes(ListNode* head) {
auto p=head;
vector<int>v;
while(p)
{
v.push_back(p->val);
p=p->next;
}
reverse(v.begin(),v.end());
vector<bool>st(v.size()+1,false);
int maxv=0;
for(int i=0;i<v.size();i++)
{
if(maxv<=v[i])maxv=v[i];
else st[i]=true;
}
vector<int>res;
for(int i=0;i<v.size();i++)
if(!st[i])res.push_back(v[i]);
reverse(res.begin(),res.end());
ListNode* dummy=new ListNode(-1);
auto last=dummy;
for(int i=0;i<res.size();i++)
{
ListNode *p=new ListNode(res[i]);
if(i==0)dummy->next=p,last=p;
else last->next=p,last=p;
}
return dummy->next;
}
};
2488. 统计中位数为 K 的子数组
哈希表统计!!这么简单我没写出来
class Solution {
public:
int countSubarrays(vector<int>& nums, int k) {
int n=nums.size();
int idx=0;
vector<int>s(n+1,0);
for(int i=0;i<n;i++)
{
if(nums[i]<k)nums[i]=-1;
else if(nums[i]>k)nums[i]=1;
else
{
nums[i]=0;
idx=i;
}
}
map<int,int>mp;
for(int i=idx;i>=0;i--)
{
s[i]=s[i+1]+nums[i];
mp[s[i]]++;
}
int res=0,s1=0;
for(int i=idx;i<n;i++)
{
s1+=nums[i];
int val=1-s1;
if(mp.count(val))res+=mp[val];//偶数长度
val=-s1;
if(mp.count(val))res+=mp[val];//奇数长度
}
return res;
}
};