面试的一些记录

1. lower_bound和upper_bound只能对升序数组使用,降序都不行。

2.前k大(基于快排)

void mysort(int *a,int l,int r,int k){
    if(l==r||l>r) return ;
    int base=a[l],i=l,j=r,tmp;
    while(i!=j){
        while(a[j]<=base&&j>i)
            j--;
        while(a[i]>=base&&i<j)
            i++;
        if(i<j)
        {
            tmp=a[j];
            a[j]=a[i];
            a[i]=tmp;
        }
    }
    tmp=a[i];
    a[i]=base;
    a[l]=tmp;
    if(k<=i)
        mysort(a,l,i-1,k);
    else {
        mysort(a, l, i - 1, k);
        mysort(a,i+1,k,k);
    }
}

3.实现大顶堆

#include<bits/stdc++.h>
using namespace  std;

class heap{//大顶堆
public:
    int hp[1005],sz;
    void update(int pos){//维护大顶堆性质,i节点值大于2*i和2*i+1节点的值 (下沉) o(logn)
        int largest=pos;
        int ls=pos<<1,rs=(pos<<1)+1;
        if(ls<=sz&&hp[largest]<hp[ls]) largest=ls;
        if(rs<=sz&&hp[largest]<hp[rs]) largest=rs;
        if(largest!=pos) {
            swap(hp[largest], hp[pos]);
            update(largest);
        }
    }
    void init(int n,int *a){  //把初始数组拷贝到hp数组,建堆  o(n)
        sz=n;
        for(int i=0;i<n;i++) hp[i+1]=a[i];
        for(int i=sz/2;i>=1;i--)
            update(i);
    }
    void insert(int x){//向堆中插入x,并重新维护堆操作(上浮)
        hp[++sz]=x;
        int son=sz,fa=son/2;
        while(son!=1){
            if(hp[son]>hp[fa]) swap(hp[son],hp[fa]);
            son=fa;
            fa/=2;
        }
    }
    void sort(){  //利用堆,在heap数组里升序排序
        for(int i=sz;i>=1;i--) {
            swap(hp[1], hp[i]);
            sz--;
            update(1);
        }
    }
    void remove(){  //删除堆顶
        hp[1]=hp[sz];
        sz--;
        if(sz!=0)
            update(1);
    }
    int peek(){
        return hp[1];
    }
    bool empty(){
        return sz==0;
    }
};
int main(){
    int n,a[10];
    cin>>n;
    for(int i=0;i<10;i++) cin>>a[i];
    heap myheap;
    myheap.init(n,a);
    myheap.sort();
    for(int i=1;i<=n;i++) cout<<myheap.hp[i]<<"   ";
    return 0;
}

4.字符串匹配(富途)

  判断s1是否是s2的子串,如"abc”是“pobcae”的子串,"abc”不是"pbocae"的子串

Hash O(N)

猜你喜欢

转载自blog.csdn.net/qq_40642465/article/details/114550898