腾讯面试笔试题2023.11.30

给定一个由整数组成的非空数组所表示的非负整数如[1,2,3],在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
(要求只能操作数组,不能转成数字直接加一)
示例 1:
输入: [1,2,3] 输出: [1,2,4]
示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2]
示例 3:
输入:[9] 输出:[1,0]
示例 4:
输入:[9,9,9] 输出:[1,0,0,0]

三种方法:

function addOne(nums) {  
  let carry = false; // 进位标志  
  for (let i = nums.length - 1; i >= 0; i--) {  
    if (carry) {  
      nums[i] = (nums[i] + 1) % 10; // 加一并取模  
      carry = nums[i] === 0; // 判断是否进位  
    } else if (nums[i] === 9) {  
      nums[i] = 0; // 当前位为9,加一后变为0  
      carry = true; // 设置进位标志  
    } else {  
      nums[i]++; // 当前位小于9,直接加一  
      return nums; // 没有进位,直接返回数组  
    }  
  }  
  if (carry) {  
    nums.unshift(1); // 最高位需要加1,插入一个1  
  }  
  return nums;  
}

第二种:

function plusOne(digits) {
  let carry = 1; // 进位初始为1
  for (let i = digits.length - 1; i >= 0; i--) {
    digits[i] += carry; // 当前位加上进位
    carry = Math.floor(digits[i] / 10); // 计算新的进位
    digits[i] %= 10; // 取余得到当前位的值
  }
  
  if (carry > 0) {
    digits.unshift(carry); // 如果最高位有进位,将进位加到数组的开头
  }
  
  return digits;
}

第三种:

var plusOne = function(digits) {
 for(let i =digits.length-1;i>=0;i--)
 {
     if(digits[i]<9){digits[i]++;return digits;}
     else digits[i]=0;
 }
 digits.splice(0,0,1)
 return digits;
};

相关推荐

  1. 面试试题2023.11.30

    2023-12-06 10:26:06       38 阅读
  2. promise面试试题

    2023-12-06 10:26:06       14 阅读
  3. 面试

    2023-12-06 10:26:06       26 阅读
  4. C++面试题和试题(三)

    2023-12-06 10:26:06       20 阅读
  5. C++面试题和试题(五)

    2023-12-06 10:26:06       18 阅读
  6. Hive窗口函数试题面试题)

    2023-12-06 10:26:06       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 10:26:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 10:26:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 10:26:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 10:26:06       18 阅读

热门阅读

  1. gsap实现文字动画效果02

    2023-12-06 10:26:06       37 阅读
  2. Oracle初始化参数文件pfile和spfile

    2023-12-06 10:26:06       34 阅读
  3. AFPN:用于目标检测的渐近特征金字塔网络

    2023-12-06 10:26:06       38 阅读
  4. AFPN:用于目标检测的渐近特征金字塔网络

    2023-12-06 10:26:06       37 阅读
  5. 【SpringCloud】设计原则之前后端分离与版本控制

    2023-12-06 10:26:06       28 阅读
  6. ES6基础语法

    2023-12-06 10:26:06       40 阅读
  7. ES6迭代器

    2023-12-06 10:26:06       36 阅读
  8. 查看php进程占用内存

    2023-12-06 10:26:06       39 阅读
  9. 【RabbitMQ基础编程模型】

    2023-12-06 10:26:06       35 阅读
  10. 3分钟在CentOS 7上离线安装Docker

    2023-12-06 10:26:06       33 阅读
  11. Web测试自动化工具Selenium的使用

    2023-12-06 10:26:06       44 阅读