欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

20201213周回顾

程序员文章站 2022-07-10 17:36:58
...

1,再把这个写一遍…
2,山形数组出错了,小细节问题。
3,连接两个链表

Error - Found cycle in the ListNode
链表中发现循环
细节问题
4,设计前中后队列
错误原因我见过 内存清洗什么的address sanitizer
因为没写 if(q.empty()) return -1;
5,最大重复子字符串…
唉感觉不太会这题
还是挺好想的,没那么难
这个还是最顺利的…一遍过。
6,k和数对的最大数目。。。
感觉这个是挺久的了。
这个hashmap,key是值对吧,value是标记号?
还行,但是内部机制感觉还是不是很懂
再就是选择的else结构要加条件的话
记得写程else if(…)的形式。
7,连续连接2进制数字
只记得是在十进制的天空下
恩错了
我记成选择结构我傻了
还是理解不深
8,拼接最大数,
真是woc这么长。
首先定义名整这么长的就是sb。
int start = max(0, k - n), end = min(k, m);
这段我终于看懂了
不错。。。。先把主函数写出来了
感觉像这个单调栈求子序列呢
还是枚举一个东西比较好,

这个ms函数呢只能说懂了一些,还需要更多的例子去模拟它才能理解更深。
其实就是用数组模拟栈呗。
真累噢4点到8.30了…

compare
这段
return (x - index1) - (y - index2);
不太懂。。
还是得模拟有时间再看把。
expected unqualified-id是GCC的默认报错。在GCC遇到语法错误又不知道报什么错的时候,基本上就会看到expected unqualified-id
vector maxNumber(vector& nums1, vector& nums2, int k) {
int m=nums1.size();
int n=nums2.size();

    vector<int> ans(k,0);
    int start=max(0,k-n);
    int end=min(k,m);
    for(int i=start;i<=end;i++)
    {
        vector<int> s1(ms(nums1,i));
        vector<int> s2(ms(nums2,k-i));
        vector<int> curms(merge(s1,s2));
        if(compare(ans,0,curms,0))
        {
            ans.swap(curms);
        }
    }
    return ans;
   

}
 vector<int> ms(vector<int>&num,int k)
    {
        int top=-1;
        int length=num.size();
        int remain=length-k;
        vector<int> stack(k,0);
        for(int i=0;i<length;i++)
        {
            int nums=num[i];
            while(top>=0&&stack[top]<nums&&remain>0)
            {
                top--;
                remain--;

            }
            if(top<length-1)
            {
                stack[++top]=nums;

            }
            else
            {
                remain--;
            }
        }
        return stack;
    }
    vector<int>merge(vector<int>&s1,vector<int>&s2)
    {
        int x=s1.size();
        int y=s2.size();
        int ml=x+y;
        vector<int> merged(ml);
        int in1=0;
        int in2=0;

        if(x==0)
        {return s2;}
        if(y==0)
        {return s1;}

        for(int i=0;i<ml;i++)
        {
            if(compare(s1,in1,s2,in2)>0)
            {
                merged[i]=s1[in1++];
            }
            else
            {
                merged[i]=s2[in2++];
            }
        }

        return merged;

    }
     int compare(vector<int>&s1,int in1,vector<int>&s2,int in2)
    {
        int x=s1.size();
        int y=s2.size();
        while(in1<x&&in2<y)
        {
            int di=s1[in1]-s2[in2];
            if(di!=0)
            {
                return di;
            }
            in1++;
            in2++;

        }
        return (x-in1)-(y-in2);
    }

};
错了以后再看把

相关标签: lc