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

简介: 有点相似于:链表相加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;
}


目录
相关文章
|
6月前
每日一题来啦!请查收~(至少是其他数字两倍,两个数组的交集)
每日一题来啦!请查收~(至少是其他数字两倍,两个数组的交集)
29 0
|
6月前
|
算法 Java
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
70 0
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
|
6月前
【每日一题Day317】LC2605从两个数字数组里生成最小数字 | 哈希表
【每日一题Day317】LC2605从两个数字数组里生成最小数字 | 哈希表
41 0
|
11月前
|
算法 测试技术 C#
C++二分查找算法:数组中占绝大多数的元素
C++二分查找算法:数组中占绝大多数的元素
|
存储
学C的第二十三天【继续深度剖析数据在内存中的存储:3. 浮点型在内存中的存储(重点);练习:1. 有序序列判断;2. 获得月份天数(多组输入);3. 使用指针打印数组内容;4. 使用指针使字符串逆序】-2
(4). 取出内存中的 指数E(三种情况):E全为1 指数E 是通过 真实值+中间值 算出来的,如果E全是1,(32位系统)说明E的真实值是 128,指数是128说明这个值是非常大的。 这时,如果 有效数字M 全为0,表示 ±无穷大(正负取决于符号位s)
|
算法 JavaScript 前端开发
算法简单题,吾辈重拳出击 - 前 n 个数字二进制中 1 的个数
最近做的题,明眼人一看都能知道大都和动态规划 DP 有关,因为就是从动态规划分类下抽取的简单题,有的题在剑指 offer 系列中是简单题,但是在力扣主列表里确实中等难度的题目。 简单与难,也并非是绝对的,每个人的感受都会不同。更重要的是,通过这些题构建基础的算法思路,建立信心。
C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)
C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)
C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)
二进制中1的个数(简单难度)
二进制中1的个数(简单难度)
92 0
二进制中1的个数(简单难度)