笔面试算法--算法编程技巧(点击消除、计划清单、算术教室、kotori和n皇后)

这篇博客探讨了三个不同的编程问题:第一个涉及检测字符串中最长回文子串;第二个是根据数值范围对数组进行筛选和排序;第三个是检查两个数组是否存在特定的数位组合。这些问题都涉及到基本的数据结构和算法应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<cstdio>
#include<cmath>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<iomanip>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<cstring>
#include<string>
#include<numeric>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
//bbbbb
stack<char>st;
string s;
int main()
{
    cin>>s;
    int cd=s.size();
    st.push(s[0]);
    for(int i=1; i<cd; i++)
    {
        if(!st.empty()&&st.top()==s[i])
            st.pop();
        else
            st.push(s[i]);
    }
    if(st.empty())
        cout<<0<<endl;
    else
    {
        string jg="";
        while(!st.empty())
        {
            jg=st.top()+jg;
            st.pop();
        }
        cout<<jg<<endl;
    }
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<cmath>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<iomanip>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<cstring>
#include<string>
#include<numeric>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n,mx=-1,mi=inf;
struct node
{
    string name;
    int nd;
} p[100010];
bool cmp(node a,node b)
{
    return a.nd<b.nd;
}
int main()
{
    int ct=0;
    cin>>n;
    node jg[100010];
    for(int i=0; i<n; i++)
    {
        cin>>p[i].name>>p[i].nd;
        if(i==0)
        {
            mi=min(mi,p[i].nd);
            mx=max(mx,p[i].nd);
            jg[ct].name=p[i].name;
            jg[ct].nd=p[i].nd;
            ct++;
        }
        else
        {
//            cout<<mx<<' '<<mi<<endl;
            if(p[i].nd>mx||p[i].nd<mi)
            {
                mi=min(mi,p[i].nd);
                mx=max(mx,p[i].nd);
                jg[ct].name=p[i].name;
                jg[ct].nd=p[i].nd;
                ct++;
            }
        }
    }
    sort(jg,jg+ct,cmp);
    cout<<ct<<endl;
    for(int i=0; i<ct; i++)
        cout<<jg[i].name<<endl;
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<cmath>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<iomanip>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<cstring>
#include<string>
#include<numeric>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int m,n,x;
map<int,int>mp;
int main()
{
    int fg=0,ls;
    cin>>n>>m>>x;
    for(int i=0; i<n; i++){
        cin>>ls;
        mp[ls]=1;
    }
    for(int i=0; i<m; i++){
        cin>>ls;
        if(mp[x-ls]==1)
            fg=1;
    }
    if(fg==1)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<cmath>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<iomanip>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<cstring>
#include<string>
#include<numeric>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n,x,y,q,t;
set<int>s1,s2,s3,s4;
int main(){
    int fg=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x>>y;
        if(s1.count(x)||s2.count(y)||s3.count(x-y)||s4.count(x+y)){
            if(fg==0)
                fg=i;
        }
        s1.insert(x);
        s2.insert(y);
        s3.insert(x-y);
        s4.insert(x+y);
    }
    cin>>q;
    while(q--){
        cin>>t;
        if(fg>0&&t>=fg)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值