当前位置: 首页 > article >正文

Leetcode—66.加一【简单】

2023每日刷题(十一)

Leetcode—66.加一

实现代码1



/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize){
  int num = 0;
  int i = 0;
  int arr[110] = {0};
  // 进位标识符
  int carryOver = 0;
  int cnt = digitsSize - 1;
  int tmp = digits[cnt] + 1;
  if(tmp == 10) {
      carryOver = 1;
      arr[cnt] = 0;
    } else {
      arr[cnt] = tmp;
    }
  int cur = cnt;
  while(cnt--) {
    if(carryOver == 0) {
      arr[--cur] = digits[cnt];
    } else {
      tmp = digits[cnt] + 1;
      if(tmp == 10) {
          carryOver = 1;
          arr[--cur] = 0;
      } else {
          carryOver = 0;
          arr[--cur] = tmp;
      }
    }
  }
  if(carryOver) {
    *returnSize = digitsSize + 1;
  } else {
      *returnSize = digitsSize;
  }
  cur = *returnSize;
  int *arrList = (int *)malloc((cur) * sizeof(int));
  while(digitsSize--) {
      arrList[--cur] = arr[digitsSize];
  }
  if(carryOver) {
      arrList[0] = 1;
  }
  return arrList;
}

运行结果

实现代码2



/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize){
    int cnt = 0;
    int i;
    for(i = 0; i < digitsSize; i++) {
        if(digits[i] == 9) {
            cnt++;
        }
    }
    // 全部元素都为9
    if(cnt == digitsSize) {
        int *ans = (int *)malloc((digitsSize + 1) * sizeof(int));
        ans[0] = 1;
        int j;
        for(j = 1; j < digitsSize + 1; j++) {
            ans[j] = 0;
        }
        *returnSize = digitsSize + 1;
        return ans;
    } else {
        int *ans = (int *)malloc(digitsSize * sizeof(int));
        int c = 0;
        int i;
        for(i = digitsSize - 1; i >= 0; i--) {
            if(i == digitsSize - 1) {
                ans[i] = digits[i] + 1;
                c = ans[i] / 10;
                ans[i] = ans[i] % 10;
            } else {
                ans[i] = digits[i] + c;
                c = ans[i] / 10;
                ans[i] = ans[i] % 10;
            }
        }
    *returnSize = digitsSize;
    return ans;
    }    
}

运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


http://www.kler.cn/a/106498.html

相关文章:

  • spark 设置hive.exec.max.dynamic.partition不生效
  • shell编程--永久环境变量和字符串显位
  • 【WebRTC】视频发送链路中类的简单分析(下)
  • SobarQube实现PDF报告导出
  • 【eNSP】企业网络架构实验——vlan间的路由通信(三)
  • 源码解析-Spring Eureka(更新ing)
  • JSON(详解)
  • JVM进阶(2)
  • ESP32网络开发实例-HTTP-GET请求
  • 常规APP在客户端层面潜在应用安全问题探讨
  • MySQL比较两个表数据的差异
  • Onnx精度转换 FP32->FP16
  • 全栈经验总结(不间断更新)
  • vite vue3 ts 使用sass 设置样式变量 和重置默认样式
  • HJ18 识别有效的IP地址和掩码并进行分类统计
  • 【算法|动态规划No30】leetcode5. 最长回文子串
  • gRPC之gateway集成swagger
  • 【C#】LIMS实验室信息管理系统源码
  • 强化学习------PPO算法
  • CSGO游戏搬砖的10个冷知识,90%的人还不知道
  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能
  • 腾讯云学生专享云服务器介绍及购买攻略
  • 刷题笔记day03-链表
  • 知识图谱--Jena基础操作和检索推理应用
  • 工作之外看点书籍的一点体会
  • VC++程序崩溃时,使用Visual Studio静态分析dump文件