5307. 將整數(shù)轉(zhuǎn)換為兩個無零整數(shù)的和
「無零整數(shù)」是十進制表示中 不含任何 0 的正整數(shù)昼蛀。
給你一個整數(shù) n礼饱,請你返回一個 由兩個整數(shù)組成的列表 [A, B]工猜,滿足:
A 和 B 都是無零整數(shù)
A + B = n
題目數(shù)據(jù)保證至少有一個有效的解決方案子刮。
class Solution(object):
def getNoZeroIntegers(self, n):
"""
:type n: int
:rtype: List[int]
"""
def check(num):
for i in str(num):
if i == "0":
return False
return True
arr = []
for i in range(n):
if check(i):
if check(n-i):
return [i,n-i]
5308. 或運算的最小翻轉(zhuǎn)次數(shù)
給你三個正整數(shù) a淌友、b 和 c毙沾。
你可以對 a 和 b 的二進制表示進行位翻轉(zhuǎn)操作屡立,返回能夠使按位或運算 a OR b == c 成立的最小翻轉(zhuǎn)次數(shù)。
「位翻轉(zhuǎn)操作」是指將一個數(shù)的二進制表示任何單個位上的 1 變成 0 或者 0 變成 1 搀军。
每一位進行對比膨俐,如果c一位是1那我們只需要確定a,b對應(yīng)位中任意一個為1罩句,如果c一位是0那我們需要確定a焚刺,b對應(yīng)位都為0
class Solution(object):
def minFlips(self, a, b, c):
"""
:type a: int
:type b: int
:type c: int
:rtype: int
"""
ans = 0
while a or b or c:
if c%2==1:
ans += (a|b)%2 == 0
else:
ans += a%2!=0
ans += b%2!=0
a//=2
b//=2
c//=2
return ans
5309. 連通網(wǎng)絡(luò)的操作次數(shù)
用以太網(wǎng)線纜將 n 臺計算機連接成一個網(wǎng)絡(luò),計算機的編號從 0 到 n-1门烂。線纜用 connections 表示乳愉,其中 connections[i] = [a, b] 連接了計算機 a 和 b。
網(wǎng)絡(luò)中的任何一臺計算機都可以通過網(wǎng)絡(luò)直接或者間接訪問同一個網(wǎng)絡(luò)中其他任意一臺計算機屯远。
給你這個計算機網(wǎng)絡(luò)的初始布線 connections蔓姚,你可以拔開任意兩臺直連計算機之間的線纜,并用它連接一對未直連的計算機慨丐。請你計算并返回使所有計算機都連通所需的最少操作次數(shù)坡脐。如果不可能,則返回 -1 房揭。
class Solution(object):
def makeConnected(self, n, connections):
"""
:type n: int
:type connections: List[List[int]]
:rtype: int
"""
if len(connections) < n-1:
return -1
edge = [[] for i in range(n)]
for (a,b) in connections:
edge[a].append(b)
edge[b].append(a)
vis = [0]*n
def dfs(x):
if vis[x]:
return
vis[x] = 1
for out in edge[x]:
dfs(out)
ans = 0
for i in range(n):
if not vis[i]:
ans += 1
dfs(i)
return ans-1