力扣刷题记录——258. 各位相加、263.丑数、268.丢失的数字

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《258. 各位相加、263.丑数、268.丢失的数字》。

目录

258. 各位相加

        题目描述

        解题思路

        解题代码 

263.丑数

        题目描述

        解题思路

        解题代码

268.丢失的数字

        题目描述

        解题思路

        解题代码


258. 各位相加

题目描述

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

示例 1:

输入: num = 38
输出: 2 
解释: 各位相加的过程为38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。

示例 2:

输入: num = 0
输出: 0

解题思路

这是一个很经典的题目了,每个位置相加,那么用字符串切割可以做到,避免了复杂的数学计算,重复这个过程用while循环,结束循环的条件即使各个位数上的数字相加结果为一位数。一次通过! 

解题代码 

def addDigits(num):
    while True:
        all = 0
        for i in str(num):
            all+=int(i)
        num = all
        if all <10:
            break
    return all

力扣刷题记录——258. 各位相加、263.丑数、268.丢失的数字_第1张图片

263.丑数

题目描述

丑数 就是只包含质因数 23 和 5 的正整数。

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:n = 6
输出:true
解释:6 = 2 × 3

示例 2:

输入:n = 1
输出:true
解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。习惯上将其视作第一个丑数。

示例 3:

输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 

解题思路

题目说丑数就是只包含因数235的正整数,所有,定义一个列表只含有235,如果给的数能除尽其中的某一个,说明这个是他的因子,更新给定数,直到它最终变成1,说明他的因数只有235,如果在某一次三个数字都不匹配的话,说明它有其他因数,那么返回False。特别要注意的是,n=0的时候,要单独判断一下,否则会超时错误! 

解题代码

def isUgly(n):
    num_list = [2,3,5]
    while True:
        if n == 1:
            return True
        if n == 0:
            return False
        else:
            if n % num_list[0] == 0:
                n = n/ num_list[0]
            elif n %num_list[1]==0:
                n = n/ num_list[1]
            elif n %num_list[2] == 0:
                n = n/ num_list[2]
            else:
                return False

力扣刷题记录——258. 各位相加、263.丑数、268.丢失的数字_第2张图片

268.丢失的数字

题目描述

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

示例 1:

输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 2:

输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 3:

输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。

解题思路

找缺失的数字,只要用列表长度生成一个新列表,再用这两个列表做差就可以了,做差我采用的是列表推导式的方法,一次通过! 

解题代码

def missingNumber(nums):
    length = len(nums)
    nums_list = [i for i in range(length+1)]
    target = [i for i in nums_list if i not in nums]
    return target[0]

力扣刷题记录——258. 各位相加、263.丑数、268.丢失的数字_第3张图片

 

你可能感兴趣的:(蓝桥杯刷题,leetcode,算法,职场和发展,蓝桥杯,刷题)