1217. 玩筹码
不改变筹码位置的奇偶性时代价为0
改变奇偶性的代价为1
class Solution:
def minCostToMoveChips(self, chips: List[int]) -> int:
a,b=0,0
for i in chips:
if i&1:
a+=1
else:
b+=1
return a if a<b else b
7. 整数反转
2^ 31-1=2147483647,-2^ 31=-2147483648
7或8是因为最小值是负2的31次方是-2147483648,最大值2的31次方减一是2147483647,这两个数值的个位数是7和8
class Solution:
def reverse(self, x: int) -> int:
res=0
max1=2**31-1
min1=-2**31
while x!=0:
tmp=-(abs(x)%10) if x<0 else x%10
if res>max1//10 or res==max1//10 and tmp>7:
return 0
if res<int(min1/10) or res==int(min1/10) and tmp<-8:
return 0
res=res*10+tmp
x=int(x/10)#-123//10=-13,-123/10=-12.3,所以用int
return res
class Solution:
def reverse(self, x: int) -> int:
res=0
if x<-2**31+1 or x>2**31:
return 0
bounry=2**31-1 if x<0 else 2**31
y=abs(x)
while y!=0:
res=res*10+y%10
if res>bounry:
return 0
y//=10
return res if x>0 else -res
190. 颠倒二进制位
我们从右到左遍历输入整数的位字符串(即 n=n>>1)。要检索整数的最右边的位,我们应用与运算(n&1)。
对于每个位,我们将其反转到正确的位置(即(n&1)<<power)。然后添加到最终结果。
当 n==0 时,我们终止迭代。
class Solution:
def reverseBits(self, n: int) -> int:
res=0
power=31
while n!=0:
res+=(n&1)<<power
n=n>>1
power-=1
return res
面试题05. 替换空格
class Solution:
def replaceSpace(self, s: str) -> str:
res=[]
for c in s:
if c==' ':
res.append('%20')
else:
res.append(c)
return ''.join(res)
面试题10- II. 青蛙跳台阶问题
class Solution:
def climbStairs(self, n: int) -> int:
if n<2:
return 1
# dp=[0]*(n+1)
# dp[1]=1
# dp[2]=2
# i=3
# while i<n+1:
# dp[i]=dp[i-1]+dp[i-2]
# i+=1
# return dp[-1]
a=1
b=2
i=3
while i<n+1:
a,b=b,a+b
i+=1
return b
1137. 第 N 个泰波那契数
class Solution:
def tribonacci(self, n: int) -> int:
if n<=1:
return n
if n==2:
return 1
a,b,c=0,1,1
i=3
while i<n+1:
a,b,c=b,c,a+b+c
i+=1
return c
面试题 16.11. 跳水板
class Solution:
def divingBoard(self, shorter: int, longer: int, k: int) -> List[int]:
if k==0:
return []
if shorter==longer:
return[k*longer]
else:
return [(k-i)*shorter+i*longer for i in range(k+1)]