Solution: Convert Binary Number in a Linked List to Integer

 Given head which is a reference node to a singly-linked list. The value of each node in the linked list is either 0 or 1. The linked list holds the binary representation of a number.

Return the decimal value of the number in the linked list.

 

Example 1:

Input: head = [1,0,1]
Output: 5
Explanation: (101) in base 2 = (5) in base 10

Example 2:

Input: head = [0]
Output: 0

Example 3:

Input: head = [1]
Output: 1

Example 4:

Input: head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
Output: 18880

Example 5:

Input: head = [0,0]
Output: 0

 

Constraints:

  • The Linked List is not empty.
  • Number of nodes will not exceed 30.
  • Each node's value is either 0 or 1.
Solution: 
Đây là một bài toán tầm thường nhìn là biết kết quả chỉ cần thấy 1 nhân 2 rồi cộng với giá trị của bit hiện tại.

Nhưng có một cách hay hơn là dùng bitwise với 2 toán tử << và |. Tính chất của hai cái này tương tự như đã nói ở trên, << tương đương với nhân 2, còn | thì nó sẽ + 1 nếu là 1 và + 0 nếu là 0. ví dụ : 2 (thập phân) | 1 (thập phân) -> 10 (nhi phân) | 01 (nhị phân) -> 11.

Source code:

Nhận xét

Bài đăng phổ biến từ blog này

Hiểu về Norm Regularization

Những thuật toán nền tảng trong lĩnh vực Trí tuệ nhân tạo (Artificial Intelligence I)