题解 | #给单链表加一#

给单链表加一

http://www.nowcoder.com/practice/a2f1105d2ac5466e9ba8fd61310ba6d1

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
// 反转链表
function reverse (node) {
  let pre = null
  let cur = node
  let next = null
  
  while (cur) {
    next = cur.next
    cur.next = pre
    pre = cur
    cur = next
  }
  
  return pre
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
function plusOne( head ) {
  let cur = reverse(head)
  let result = new ListNode(-1),
      temp = result,
      flag = false
  
  while (cur) {
    if (!flag) cur.val += 1
    flag = true
    
    if (cur.val > 9) {
      cur.val = 0
      flag = false
      temp.next = cur
      temp = temp.next
    } else {
      temp.next = cur
      temp = temp.next
    }
    
    cur = cur.next
  }
  
  if (temp.val === 0) {
    temp.next = new ListNode(1)
  }
  
  return reverse(result.next)
}
module.exports = {
    plusOne : plusOne
};
全部评论

相关推荐

12-11 14:24
门头沟学院 Java
牛客35720396...:不要用boss,全是骗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务