Given an array of strings nums containing n unique binary strings each of length n, return a binary string of length n that does not appear in nums. If there are multiple answers, you may return any of them.
Example 1:
Input: nums = ["01","10"]
Output: "11"
Explanation: "11" does not appear in nums. "00" would also be correct.
Example 2:
Input: nums = ["00","01"]
Output: "11"
Explanation: "11" does not appear in nums. "10" would also be correct.
Example 3:
Input: nums = ["111","011","001"]
Output: "101"
Explanation: "101" does not appear in nums. "000", "010", "100", and "110" would also be correct.
Constraints:
n == nums.length
1 <= n <= 16
nums[i].length == n
nums[i] is either '0' or '1'.
All the strings of nums are unique.
Since n
is not big, just go from 0 to 2 n 2^n 2n to find the missing value. Remember to pad 0
at the left for each binary number.
Time complexity: o ( 2 n ∗ n ) o(2^n*n) o(2n∗n)
Space complexity: o ( 1 ) o(1) o(1)
Sort the nums
, and starts with 0
, every time if the number equals to the number in nums
, then current number plus 1, until the current number is not the same as the number in nums
.
Time complexity: o ( n log n ) o(n\log n) o(nlogn)
Space complexity: o ( 1 ) o(1) o(1)
Solved after help, this is so brilliant!!
Construct a string, the 1st digit is different with 1st number, and the 2nd digit is different with 2nd number, then after go through all the numbers we get the final results. since it’s different with all the numbers.
Time complexity: o ( n ) o(n) o(n)
Space complexity: o ( 1 ) o(1) o(1)
class Solution:
def findDifferentBinaryString(self, nums: List[str]) -> str:
n = len(nums)
for i in range(2**n):
binary_string = bin(i)[2:]
binary_string_pad = '0' * (n - len(binary_string)) + binary_string
if binary_string_pad not in nums:
return binary_string_pad
class Solution:
def findDifferentBinaryString(self, nums: List[str]) -> str:
n = len(nums)
prev = '0' * n
nums.sort()
def add_one(binary_str: str) -> str:
binary_num = list(binary_str)
for i in range(len(binary_num) - 1, -1, -1):
if binary_num[i] == '1':
binary_num[i] = '0'
else:
binary_num[i] = '1'
break
return ''.join(binary_num)
for each_num in nums:
if prev == each_num:
prev = add_one(prev)
else:
return prev
return prev
class Solution:
def findDifferentBinaryString(self, nums: List[str]) -> str:
n = len(nums)
res = ['0'] * n
for i in range(n):
res[i] = '1' if nums[i][i] == '0' else '0'
return ''.join(res)