翻倍以链表形式表示的数字

简介: 有点相似于:链表相加II,这道题我们仍然有进位,但不同的是,链表相加我们选择了开辟新节点,这道题我们选择反转两次链表,开始一次,结束一次。

507427c8ba884886a36de72e33fd79e8.png


题目:

90c51fb339374736bd13b1df47ccbd3a.png

示例:

f1d16177a23745a5aa4bcf41fa9e93a8.png


思路:


有点相似于:链表相加II,这道题我们仍然有进位,但不同的是,链表相加我们选择了开辟新节点,这道题我们选择反转两次链表,开始一次,结束一次。

8deb15e24af0479ab073e5d59270c3d2.png

单链表的翻转详细讲解反转一个单链表(<---点击可看详解)


题解代码:

struct ListNode* reverse(struct ListNode* head)
{
    struct ListNode* n1 = NULL;
    struct ListNode* n2 = head;
    struct ListNode* n3 = NULL;
    if(n2)
      n3 = n2->next;
    while (n2)
    {
      n2->next = n1;
      n1 = n2;
      n2 = n3;
      if (n3)
        n3 = n3->next;
    }
    return n1;
}
struct ListNode* doubleIt(struct ListNode* head)
{
    struct ListNode* prev = NULL;
    struct ListNode* Back = reverse(head);
    head = Back;
    int add = 0;
    while(Back)
    {
        int temp = Back->val * 2 + add;
        add = temp / 10;
        prev = Back;
        Back->val = temp % 10;
        Back = Back->next;
    }
    if(add > 0)
    {
        struct ListNode* newnode = malloc(sizeof(struct ListNode));
        newnode->val = add;
        newnode->next = NULL;
        prev->next = newnode;
    }
    head = reverse(head);
    return head;
}


目录
相关文章
|
8月前
|
算法 Java
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
75 0
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
【剑指offer】- 数组中重复的数字 -48/67
【剑指offer】- 数组中重复的数字 -48/67
【剑指offer】-数字在排序数组中出现的次数-32/67
【剑指offer】-数字在排序数组中出现的次数-32/67
|
C语言
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
67 0
剑指offer-1.找出数组中重复的数字
剑指offer-1.找出数组中重复的数字
35 0
|
C++
剑指offer 55. 数字在排序数组中出现的次数
剑指offer 55. 数字在排序数组中出现的次数
88 0
|
C++
剑指offer 01. 找出数组中重复的数字
剑指offer 01. 找出数组中重复的数字
60 0
剑指offer 03. 数组中的重复数字
剑指offer 03. 数组中的重复数字
80 0
剑指offer 03. 数组中的重复数字
|
算法 Java C#
数组中数字出现的个数(剑指offer 56-I)
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
|
算法 Java 索引
数组中重复的数字(剑指offer 03)
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
102 0