二进制链表转整数

这篇具有很好参考价值的文章主要介绍了二进制链表转整数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。

请你返回该链表所表示数字的 十进制值

示例 1:

二进制链表转整数,链表,算法,数据结构

输入:head = [1,0,1]
输出:5
解释:二进制数 (101) 转化为十进制数 (5)

示例 2:

输入:head = [0]
输出:0

示例 3:

输入:head = [1]
输出:1

示例 4:

输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
输出:18880

示例 5:

输入:head = [0,0]
输出:0

代码如下:文章来源地址https://www.toymoban.com/news/detail-625467.html

//方法一:
class Solution {
public:
    int getDecimalValue(ListNode* head) {
        int res=0;
        ListNode* curr=head;
        ListNode* prev=nullptr;

        while(curr!=nullptr)//反转链表
        {
            ListNode* temp=curr->next;
            curr->next=prev;
            prev=curr;
            curr=temp;
        }
        int t=1;//2^0=1
        curr=prev;//反转之后的链表链表的头部指向prev,此时让prev指向curr,链表头部为curr
        while(curr!=nullptr)
        {
            res+=t*curr->val;
            t*=2;//2^0  2^1  2^2每次都是2倍
            curr=curr->next;
        }
        return res;//返回最终结果

    }
};

//方法二:
class Solution {
public:
    int getDecimalValue(ListNode* head) {
       int res=0;//记录最终结果
       ListNode* curr=head;
       while(curr!=nullptr)
       {
           res=res*2+curr->val;//就相当于十进制数526=52*10+6,此时是二进制数
           curr=curr->next;
       }
       return res;

    }
};

到了这里,关于二进制链表转整数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法之字符串: Leetcode 696. 计数二进制子串 (Typescript版)

    计数二进制子串 https://leetcode.cn/problems/count-binary-substrings/ 描述 给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的。 重复出现(不同位置)的子串也要统计它们出现的次数。 示例 1: 示

    2024年02月01日
    浏览(59)
  • java数据结构与算法刷题-----LeetCode1091. 二进制矩阵中的最短路径

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 双分裂蛇:是求二维表中从起点到终点的经典思路(也是求无权图的最短路径问题的经典解法)。创建两条分裂蛇,分别从起点和

    2024年04月26日
    浏览(52)
  • C语言:二进制、八进制、十六进制整数的书写及输出

    目录 一、整型数据类型 二、二进制、八进制、十六进制的书写 1)二进制 以 0b / 0B 开头,不区分大小写(数字0,而非字母o,下同) 2)八进制 以数字 0 开头         3)十六进制 以 0x / 0X 开头, 三、二进制、八进制和十六进制的输出 八进制   (%o): 十六进制   (%x):

    2024年02月05日
    浏览(69)
  • 进制转换—包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2023年04月23日
    浏览(99)
  • 【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2024年02月05日
    浏览(306)
  • MATLAB练习题:编写程序将十进制正整数转换为对应的二进制字符向量

     讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。 MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili  编写程序将十进制正整数转换为对应的二进制字符向量。例如6对应的二进制字符向量为\\\'110\\\', 38对应的二进制字

    2024年02月02日
    浏览(52)
  • C语言每日一题之整数求二进制1的个数

    今天分享一道题目,用三种方法来求解 二进制1的个数 方法1 我们的十进制除10和取余数就可以得到我们每一位的数字,那我们的二进制也可 以 这是一种方法,另外一种就是我们可以用移位操作符来算 这个方法是不是也是特别妙呢,当然还有更妙的方法,请看!!! 相信看

    2024年02月15日
    浏览(62)
  • C语音:打印整数二进制的奇数位和偶数位

    获取 一个 整数二进制序列中 所有的 偶数位 和 奇数位 , 分别打印 出二进制序列                       =========================================================================                         (一). 输入 数据                           (二). 打印 奇数位 : 使用 for循

    2024年02月09日
    浏览(67)
  • [保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

    将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行输出对应的二进制数。 仍然是“除2取余法”,主要的区别在

    2024年02月13日
    浏览(86)
  • C++如何实现将一个整数转化为二进制数(使用尽量少的代码量)

    1、使用容器vector  这种方法非常简洁,当然使用数组也可以用不多的代码来进行实现。 将其转化为容易移植的函数如下: 注意在使用之前一定要#includevector头文件 2、一般数组实现 当然,还没有接触容器的小伙伴们也可以用普通的数组来进行实现,其算法仍然是通过对2取余

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包