最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 力扣(LeetCode)刷题,简单题(第10期)

    正文概述 掘金(不脱发的程序猿_掘金)   2021-01-14   596

    目录

    第1题:有序数组的平方

    第2题:增减字符串匹配

    第3题:数字的补数

    第4题:Nim游戏

    第5题:删除字符串中的所有相邻重复项

    第6题:除数博弈

    第7题:转换成小写字母

    第8题:生成每种字符都是奇数个的字符串

    第9题:按奇偶排序数组

    第10题:转置矩阵


    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

    第1题:有序数组的平方

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    /**
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int cmp (const void * a, const void * b)
    {
       return ( *(int*)a - *(int*)b );
    }
    
    int* sortedSquares(int* A, int ASize, int* returnSize){
        *returnSize=ASize;
    
        for(int i=0;i<ASize;i++){
            A[i]=A[i]*A[i];
        }
    
        qsort(A, ASize, sizeof(int), cmp);
    
        return A;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第2题:增减字符串匹配

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    /**
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int* diStringMatch(char * S, int* returnSize)
    {
        int N = strlen(S);
        int a=N;
        int b=0;
        int *ret = (int *)malloc(sizeof(int)*(N+1));
        *returnSize = N + 1;
    
        for (int i=0;i<N;i++){
            if (S[i] == 'I'){
                ret[i] = b;
                b++;
            }
            else{
                ret[i] = a;
                a--;
            }
        }
    
        ret[N] = b;
        
        return ret;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第3题:数字的补数

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    int findComplement(int num){
        long temp = 1;
        
        while (num >= temp){
            temp <<= 1;
        }
        return (temp - 1 - num);
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第4题:Nim游戏

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    bool canWinNim(int n){
       return (n % 4 != 0); 
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第5题:删除字符串中的所有相邻重复项

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    char * removeDuplicates(char * S){
        int i, cnt, len = strlen(S);
    
        for(i = 1, cnt = 0;i <= len;++i)
        {
            if(cnt == -1 || S[i] != S[cnt])
                S[++cnt] = S[i];
            else 
                --cnt;
        }
        return S;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第6题:除数博弈

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    bool divisorGame(int N){
        // 如果爱丽丝拿到奇数,则必输,
        // 因为奇数的因数必为奇数,则N-x必为偶数,
        // 鲍勃拿到偶数之后,只需要-1交还给爱丽丝,则爱丽丝再次拿到奇数,
        // 这样鲍勃永远拿到偶数,直到拿到2赢下比赛
    
        // 反过来,如果爱丽丝拿到偶数,只需要-1给鲍勃,那么鲍勃就必输。
        return N%2==0;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第7题:转换成小写字母

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    char * toLowerCase(char * str){
    
        for(int i=0;i<strlen(str);i++){
            if(str[i]>='A'&&str[i]<='Z')
                str[i]=str[i]+32;
        }
    
        return str;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第8题:生成每种字符都是奇数个的字符串

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    char * generateTheString(int n)
    {
        char *ret=(char *)malloc(sizeof(char)*(n+1));
        ret[n]='\0';
        memset(ret,'a',n);
    
        ret[n-1]='a'+(n%2==0);
        
        return ret;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第9题:按奇偶排序数组

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    /**
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int* sortArrayByParity(int* A, int ASize, int* returnSize){
        int i=0,j=ASize-1;
        int temp=0;
    
        while(i<j){
            if(A[i]%2!=0 && A[j]%2==0){
                temp=A[j];
                A[j]=A[i];
                A[i]=temp;
            }
    
            if(A[i]%2==0)
                i++;
    
            if(A[j]%2!=0)
                j--;
        }
    
        *returnSize=ASize;
    
        return A;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    第10题:转置矩阵

    试题要求如下:

    力扣(LeetCode)刷题,简单题(第10期)

    回答(C语言):

    /**
     * Return an array of arrays of size *returnSize.
     * The sizes of the arrays are returned as *returnColumnSizes array.
     * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
     */
    int** transpose(int** A, int ASize, int* AColSize, int* returnSize, int** returnColumnSizes){
        int** num=(int**)malloc(sizeof(int*)*(*AColSize));
        *returnColumnSizes=(int*)malloc(sizeof(int)*(*AColSize));
        *returnSize=*AColSize;
    
        //分配内存
        for(int i=0;i<*AColSize;i++){
            num[i]=(int*)malloc(sizeof(int)*ASize);
            returnColumnSizes[0][i] = ASize;
        }
    
        //矩阵转置
        for(int i=0;i<ASize;i++){
            for(int j=0;j<*AColSize;j++){
                num[j][i]=A[i][j];
            }
        }
    
        return num;
    }
    

    运行效率如下所示:

    力扣(LeetCode)刷题,简单题(第10期)


    起源地下载网 » 力扣(LeetCode)刷题,简单题(第10期)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元