【新手上路】LeetCode刷题之“加一”

 嗯,这是一道基础题,本人作为新手就从最简单的题目开始做吧,一直坚持下去,或许哪天就刷满100道了。

 

首先用c语言来实现:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */


#include <stdlib.h>    //为保险起见,加一个图书馆头文件
int* plusOne(int* digits, int digitsSize, int* returnSize){
    for(int i=digitsSize-1;i>=0;i--)
    {
        digits[i]++;    //题目要求把数组看成一个数然后加一,那就功能模拟法直接加一
        digits[i] %= 10;   //判断是否有进位的情况

        //如果不需要进位,那就直接return就好了;如果需要进位那就循环直到找到不需要进位的那一项
        if(digits[i]!=0)   
        {
            *returnSize = digitsSize;
            return digits;
        }
    }

    if(digits[0]==0)    //如果需要进位且首位也要进位,那就需要一个“新”的数组
    {
        *returnSize = digitsSize + 1;   //returnSize代表了新数组的大小
        digits = (int *)realloc(digits,sizeof(int)*(digitsSize+1));   /拓展数组
        digits[0]=1;   //
        digits[digitsSize] = 0;    //不要忘记我们的“新”数组多出来了一位
        return digits;
    }
    return digits;   //最后要加一个return否则编译会不通过
}

 因为是新手第一次刷LeetCode,所以很多东西都得自己去探索,性能优化的话,并没有怎么去考虑。所以时间和内存的占用都会比较大,如果有更好的思路请斧正。

LeetCode的题用c语言做常常会出现returnSize这个指针,它应该是用来存放要返回的数组的大小的,如果不给它赋值的话,会直接“编译错误”,可能它在函数外还要进行检验吧,所以要给它赋值;还有最后一个return digits的问题,最后最好放一个返回值,如果不写也是有编译错误。

然后用Python来实现一下:

class Solution(object):
    def plusOne(self, digits):
        temp = 0
        for i in digits:
            temp = temp*10+i
        temp += 1
        b = []
        for i in range(len(str(temp))):
            b.append(temp%10)
            temp /= 10
        b.reverse()
        return b

 

 用Python的话这题就没有难度了,就是几种数据类型相互转换,如果一开始用c不习惯写的话,就先用Python做吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

April__Zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值