本文主要是介绍leetcode1290-Convert Binary Number in a Linked List to Integer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
请你返回该链表所表示数字的 十进制值 。
示例 1:
输入:head = [1,0,1]
输出:5
解释:二进制数 (101) 转化为十进制数 (5)
分析
这道题目就遍历链表就可以实现,先确定每一位的位数,然后分别计算每一位二进制对应的十进制数累加即可
public class LinkNode {int val;LinkNode next;public LinkNode(int data) {this.val = data;this.next = null;}
}
public class LinkList {LinkNode head;public LinkList() {this.head = null;}public LinkNode getHead() {return this.head;}//添加元素public void addNode(int data) {LinkNode node = new LinkNode(data);if (this.head == null) {this.head = node;} else {LinkNode cur = this.head;while(cur.next != null) {cur = cur.next;}cur.next = node;}}//正序打印public void print(LinkNode node) {while(node != null) {System.out.print(node.val);System.out.print(" ");node = node.next;}System.out.println();}public int getData() {LinkNode pNode = this.head;int cnt = 0;while(pNode != null) {cnt++;pNode = pNode.next;}int res = 0;pNode = this.head;while(pNode != null) {int tmp = cnt-1;int data = 1;while(tmp > 0) {data = data * 2;tmp--;}res = res + pNode.val * data;pNode = pNode.next;cnt--;}System.out.println(res);return res;}
}
public class convertBinaryNumberinaLinkedListtoInteger {public static void main(String[] args) {LinkList list = new LinkList();list.addNode(1);list.addNode(0);list.addNode(1);list.getData();}
}
这篇关于leetcode1290-Convert Binary Number in a Linked List to Integer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!