栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode C语言刷题——day1

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode C语言刷题——day1

目录

一、最后一个单词长度

1、题目描述

2、题解

3、源码

二、加一

1、题目描述

2、题解

3、源码

三、二进制求和

1、题目描述

2、题解

3、源码

四、x的平方根

1、题目描述

2、题解

3、源码

五、爬楼梯

1、题目描述

2、题解

3、源码


一、最后一个单词长度

1、题目描述

2、题解

3、源码
int lengthOfLastWord(char * s){
    int count=0;
    for (int i = strlen(s) - 1;i >= 0;i--){
        if(s[i] != ' '){
            count++;
        }
        if(s[i]==' '&& count!=0) break;
    }
    return count;
}

二、加一 1、题目描述

2、题解

3、源码
int* plusOne(int* digits, int digitsSize, int* returnSize){
    int* ans_arr = (int*)malloc(sizeof(int)*(digitsSize+2)); // 申请一个新的空间,之所以加二是为了防止进位产生多了一位
   int i,n =0;
   if (digits[digitsSize-1] != 9){//最后一位不为9
       *returnSize = digitsSize;
       ans_arr[digitsSize-1] = digits[digitsSize-1] + 1;//最后一位进行加一操作
       for (i = 0;i 0;i--){
                ans_arr[i] = 0;//其他位置
           }
           return ans_arr;
       }else {//不全为9
           int a = digitsSize - 1;
           *returnSize = digitsSize;
           while(digits[a] == 9){//从后往前找到9的位置
               ans_arr[a] = 0;
               --a;
           }
           ans_arr[a] = digits[a] + 1;
           for (i = 0;i

三、二进制求和 1、题目描述

2、题解

3、源码
char * addBinary(char * a, char * b){
    // char* r = (char*)malloc(sizeof(char) * (longlen + 2));
    // memset(r,0,sizeof(char) * (longlen + 2));
    // r[0] = '0';
    int alen = strlen(a);
    int blen = strlen(b);
    int longlen = alen > blen ? alen : blen;
    int i = alen - 1;
    int j = blen - 1;
    int k = longlen ;
    int t = 0;
     char* r = (char*)malloc(sizeof(char) * (longlen + 2));
    memset(r,0,sizeof(char) * (longlen + 2));//初始化数组
    r[0] = '0';
    while (k){
        if(i >= 0 && j >= 0) {
            if(a[i] == '1' && b[j] == '1') {
                r[k] = '2'; 
            } else if((a[i] == '1' && b[j] == '0') || (a[i] == '0' && b[j] == '1')) {
                r[k] = '1';
            } else {
                r[k] = '0';
            }
        } else if (i >= 0 && j < 0) {
            r[k] = a[i];
        } else if (i < 0 && j >= 0) {
            r[k] = b[j];
        } else {
            break;
        }
        i--;
        j--;
        k--;
    }
    bool plus = false;
    for (i = longlen;i>=0;i--){
        if(r[i] == '2'){
            if(plus == true){
                r[i] ='1';
            }else {
                r[i] = '0';
            }
            plus = true;
        }else if (r[i] == '1'){
            if(plus == true){
                r[i] = '0';
                plus = true;
            }else {
                plus = false;
            }
        }else if (r[i] == '0'){
            if(plus == true) {
                r[i] = '1';
                plus = false;
            } else{
                plus = false;
            }
        }
    }
    r[longlen+1] = '';
    if(r[0] == '0') {
        return r+1;
    } else {
        return r;
    }
    
}

四、x的平方根 1、题目描述

2、题解

3、源码
int mySqrt(int x){
    int leftNum = 1;
    int rightNum = x / 2 + 1;
    int midNum ;
    int sqrt;
    if (x==0) {
        return 0;
    }
     while(leftNum <= rightNum){
         midNum = (leftNum+rightNum) /2;
         sqrt = x / midNum;
         if (sqrt == midNum) {
             return midNum;
         }
         else if (sqrt < midNum)  {
             rightNum = midNum - 1;
         }
         else if (sqrt > midNum) {
             leftNum = midNum + 1;
         }
     }
     return leftNum - 1;
}





五、爬楼梯 1、题目描述

2、题解

3、源码
int climbStairs(int n) {
    int p = 0, q = 0, r = 1;
    for (int i = 1; i <= n; ++i) {
        p = q;
        q = r;
        r = p + q;
    }
    return r;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号