![41278d44b890da02ae70a5d4f302fd93.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/cad68917179c1c18c2c8d970b1e999bc.png)
![211d1f80d8c8ddba7b0a2a765b67698b.png](https://img-blog.csdnimg.cn/img_convert/211d1f80d8c8ddba7b0a2a765b67698b.png)
Java语言实现:
Java 的实现和C语言的实现一致,不再撰述。
代码如下:
![f493f76062f60a3141d295532ea63886.png](https://img-blog.csdnimg.cn/img_convert/f493f76062f60a3141d295532ea63886.png)
![bf2c9bb6b7685ac773ea64edff02a513.png](https://img-blog.csdnimg.cn/img_convert/bf2c9bb6b7685ac773ea64edff02a513.png)
Python语言实现:
Python 的实现和C语言的实现一致,不再撰述。
代码如下:
![0d1db91ce3a8a0a7d1cd6233cdbcdaa6.png](https://img-blog.csdnimg.cn/img_convert/0d1db91ce3a8a0a7d1cd6233cdbcdaa6.png)
![cc40da4c7c68099f4e12094d64243510.png](https://img-blog.csdnimg.cn/img_convert/cc40da4c7c68099f4e12094d64243510.png)