您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

1217. 玩筹码

宝哥大数据 发布时间:2019-11-12 16:12:41 ,浏览量:0

一、1217. 玩筹码 1.1、题目描述, 阅读题: 每个筹码的 位置 存在chips中

在这里插入图片描述

1.2.1、统计筹码所在位置的奇偶数量

奇数位置到奇数位置不消耗 偶数位置到偶数位置不消耗 奇数位置到偶数位置消耗1个单位 所以最终停留在奇数位置还是偶数位置,只需要判断奇数位置多还是偶数位置多。

class Solution:
    def minCostToMoveChips(self, chips: List[int]) -> int:
        odd = 0
        for i in chips:
            if i & 1 == 1:
                odd += 1
        return min(odd, len(chips)-odd)

二、258. 各位相加 2.1、题目描述

在这里插入图片描述

2.2.1、循环
class Solution:
    def addDigits(self, num: int) -> int:
        while num >= 10:
            num = self.add(num)
        return num

    def add(self, num: int) -> int:
        _sum = 0
        while num != 0:
            _sum += num%10
            num = num//10
        return _sum
2.2.2、数学
class Solution:
    def addDigits(self, num: int) -> int:
        if num == 0: return 0
        return (num - 1) % 9 + 1
三、202. 快乐数 3.1、题目描述

在这里插入图片描述

3.2.1、集合
class Solution:
    def isHappy(self, n: int) -> bool:
        seed = {1}
        while n not in seed:
            seed.add(n)
            n = self.add(n)
        return n == 1

    def add(self, num: int) -> int:
        _sum = 0
        while num != 0:
            _sum += pow(num%10, 2)
            num = num//10
        return _sum
3.2.2、如果不是快乐数 最终会出现4 16 37 58 89 145 42 20循环
class Solution:
    def isHappy(self, n: int) -> bool:
        return self.isHappy(sum(int(i) ** 2 for i in str(n))) if n > 4 else n == 1
3.2.3、快慢指针
class Solution:
    def isHappy(self, n: int) -> bool:
        n = str(n)
        slow = n
        fast = str(sum(int(i) ** 2 for i in n))
        while slow != fast:
            slow = str(sum(int(i) ** 2 for i in slow))
            fast = str(sum(int(i) ** 2 for i in fast))
            fast = str(sum(int(i) ** 2 for i in fast))
        return slow == "1"

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0382s