6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!

1217. 玩筹码
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第1张图片
不改变筹码位置的奇偶性时代价为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. 整数反转
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第2张图片
2^ 31-1=2147483647,-2^ 31=-2147483648
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第3张图片
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. 颠倒二进制位
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第4张图片
我们从右到左遍历输入整数的位字符串(即 n=n>>1)。要检索整数的最右边的位,我们应用与运算(n&1)。
对于每个位,我们将其反转到正确的位置(即(n&1)< 当 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. 替换空格
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第5张图片

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. 青蛙跳台阶问题
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第6张图片

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
        #     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 个泰波那契数
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第7张图片
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第8张图片

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. 跳水板
6.12 要收拾东西了!这两天无心做题,希望去实习一切顺利!_第9张图片

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)]

你可能感兴趣的:(力扣)