力扣简单算法每日练习1,一共三道

165 阅读1分钟

最近开始练习算法,c语言的,先去力扣练习了三道。 有些生疏了,一些想法自己实现起来很吃力。 在自己来来回回,改来改去,还去看了一些别人的想法,终于弄明白这三道题。 得继续加油了。

  1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。 c语言解法:

 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target,int *returnSize){
    for(int i=0;i<numsSize-1;i++){
        for(int j=i+1;j<numsSize;j++){
            if(nums[i]+nums[j]==target){
                int *result=(int*)malloc(sizeof(int)*2);//设置动态内存
                result[0]=i;
                result[1]=j;
                *returnSize=2;//返回的数组长度为2
                return result;
            }
        }
    }
    return 0;
}
  1. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。 c语言解法:

    long long d=0;
    while(x){
        d=d*10+x%10;
        x=x/10;
    }
    if(x=0){
        d=0;
    }
      if(d<pow(-2,31)||d>pow(2,31)-1){
        return 0;
        }
    return d;
   }
  1. 回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 c语言解法:

    long long a=0;
    if(x<0||x!=0&&x%10==0){
    
    return false;
    }
    else{
        while(x>a){
        a=a*10+x%10;
        x=x/10;
    }
        return x==a||x==a/10;
    }
}