将outputstream转换为二进制_LeetCode基础算法题第173篇:将链接列表中的二进制数转换为整数...

41278d44b890da02ae70a5d4f302fd93.png

技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。

如果有任何问题可以在文章后评论或者私信给我。

如果有朋友希望我讲些其他话题,请在评论区留言或者私信给我。

持续分享,敬请关注。


LeetCode 1290. 将链接列表中的二进制数转换为整数(Convert Binary Number in a Linked List to Integer)

问题描述:

给定一个是单链接列表的头节点head。链表中每个节点的值为0或1。整个链表包含数字是一个十进制整数的二进制表示形式。

返回该十进制整数。

注:

  • 链接列表不为空;
  • 节点数不会超过30;
  • 每个节点的值为 0或1;

示例:

17d0e6456c89db69b647e429bb1ef615.png

C语言实现:

这道题考的就是数字的进制特性(不限于二进制)。

我们知道对于十进制123 = 12 X 10 + 3, 而12 = 1 X 10 + 2;

对于二进制也是一样的道理。

我们以数字11作为例子,它的二进制形式是1011,按照题目描述,它的二进制链表形式是1->0->1->1。我们遍历链表:

遍历到第一个节点1,res = 1;

遍历到第二个节点0,res = 10 = (1<<1)+0;

遍历到第三个节点1,res = 101 = (10<<1)+1;

遍历到第四个节点1,res = 1011 = (101<<1)+1;

最后,详细代码如下:

cad68917179c1c18c2c8d970b1e999bc.png
211d1f80d8c8ddba7b0a2a765b67698b.png

Java语言实现:

Java 的实现和C语言的实现一致,不再撰述。

代码如下:

f493f76062f60a3141d295532ea63886.png
bf2c9bb6b7685ac773ea64edff02a513.png

Python语言实现:

Python 的实现和C语言的实现一致,不再撰述。

代码如下:

0d1db91ce3a8a0a7d1cd6233cdbcdaa6.png
cc40da4c7c68099f4e12094d64243510.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值