• Leetcode—66.加一【简单】


    2023每日刷题(十一)

    Leetcode—66.加一

    实现代码1

    1. /**
    2. * Note: The returned array must be malloced, assume caller calls free().
    3. */
    4. int* plusOne(int* digits, int digitsSize, int* returnSize){
    5. int num = 0;
    6. int i = 0;
    7. int arr[110] = {0};
    8. // 进位标识符
    9. int carryOver = 0;
    10. int cnt = digitsSize - 1;
    11. int tmp = digits[cnt] + 1;
    12. if(tmp == 10) {
    13. carryOver = 1;
    14. arr[cnt] = 0;
    15. } else {
    16. arr[cnt] = tmp;
    17. }
    18. int cur = cnt;
    19. while(cnt--) {
    20. if(carryOver == 0) {
    21. arr[--cur] = digits[cnt];
    22. } else {
    23. tmp = digits[cnt] + 1;
    24. if(tmp == 10) {
    25. carryOver = 1;
    26. arr[--cur] = 0;
    27. } else {
    28. carryOver = 0;
    29. arr[--cur] = tmp;
    30. }
    31. }
    32. }
    33. if(carryOver) {
    34. *returnSize = digitsSize + 1;
    35. } else {
    36. *returnSize = digitsSize;
    37. }
    38. cur = *returnSize;
    39. int *arrList = (int *)malloc((cur) * sizeof(int));
    40. while(digitsSize--) {
    41. arrList[--cur] = arr[digitsSize];
    42. }
    43. if(carryOver) {
    44. arrList[0] = 1;
    45. }
    46. return arrList;
    47. }

    运行结果

    实现代码2

    1. /**
    2. * Note: The returned array must be malloced, assume caller calls free().
    3. */
    4. int* plusOne(int* digits, int digitsSize, int* returnSize){
    5. int cnt = 0;
    6. int i;
    7. for(i = 0; i < digitsSize; i++) {
    8. if(digits[i] == 9) {
    9. cnt++;
    10. }
    11. }
    12. // 全部元素都为9
    13. if(cnt == digitsSize) {
    14. int *ans = (int *)malloc((digitsSize + 1) * sizeof(int));
    15. ans[0] = 1;
    16. int j;
    17. for(j = 1; j < digitsSize + 1; j++) {
    18. ans[j] = 0;
    19. }
    20. *returnSize = digitsSize + 1;
    21. return ans;
    22. } else {
    23. int *ans = (int *)malloc(digitsSize * sizeof(int));
    24. int c = 0;
    25. int i;
    26. for(i = digitsSize - 1; i >= 0; i--) {
    27. if(i == digitsSize - 1) {
    28. ans[i] = digits[i] + 1;
    29. c = ans[i] / 10;
    30. ans[i] = ans[i] % 10;
    31. } else {
    32. ans[i] = digits[i] + c;
    33. c = ans[i] / 10;
    34. ans[i] = ans[i] % 10;
    35. }
    36. }
    37. *returnSize = digitsSize;
    38. return ans;
    39. }
    40. }

    运行结果

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

  • 相关阅读:
    【C++系列P4】‘类与对象‘-三部曲——[类](2/3)
    接口设计的18条军规
    【刷题笔记9.24】LeetCode:只出现一次的数字
    springSecurity认证功能初体验
    Linux学习笔记---编辑器Vim
    JAVANBA论坛系统计算机毕业设计Mybatis+系统+数据库+调试部署
    计组+OS | 磁盘及固态硬盘SSD
    一文看懂推荐系统:排序01:多目标模型
    STM32H7的LCD控制学习和应用
    QML与C++的交互操作
  • 原文地址:https://blog.csdn.net/qq_44631615/article/details/134084378