LintCode Python 简单级题目 517.丑数

题目描述:

写一个程序来检测一个整数是不是丑数

丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。

注意事项

可以认为 1 是一个特殊的丑数。

您在真实的面试中是否遇到过这个题?

Yes

样例

给出 num = 8,返回 true
给出 num = 14,返回 false

标签

数学

题目分析:

循环取2/3/5的余数和商即可。

余=0,商=1时才为丑数。

源码:

class Solution:
    # @param {int} num an integer
    # @return {boolean} true if num is an ugly number or false
    def isUgly(self, num):
        # Write your code here
        if num == 1: return True
        if num == 0: return False
        t = [2,3,5]
        i = 0
        while True:
            if i == 3:
                return False
            res = num%t[i]
            cor = num/t[i]
            if cor == 1 and res == 0:
                return True
            elif res == 0:
                num = num/t[i]
                continue
            else:
                i += 1
时间: 2024-10-14 12:39:02

LintCode Python 简单级题目 517.丑数的相关文章

LintCode Python 简单级题目 488.快乐数

题目描述: 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 您在真实的面试中是否遇到过这个题? Yes 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 标签 数学 哈希表 题目分析: 将数

LintCode Python 简单级题目 82.落单的数

题目描述: 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 您在真实的面试中是否遇到过这个题? Yes 样例 给出 [1,2,2,1,3,4,3],返回 4 挑战 一次遍历,常数级的额外空间复杂度 标签 贪心 题目分析: 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 利用  n^n = 0的特性,一个数异或本身结果为0 而  n^0 = n,所以 n^n-1^n = n-1, 所以保存异或结果,循环异或列表元素即可

LintCode Python 简单级题目 最小子数组和、最大子数组和

题目1 最小子数组 描述: 给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 注意事项 子数组最少包含一个数字 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组[1, -1, -2, 1],返回 -3 标签 LintCode 版权所有 子数组 贪心 数组 题目2 最大子数组 描述: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 注意事项 子数组最少包含一个数 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组[?2,2,?3,4,?1,2,1,?5,

LintCode Python 简单级题目 451.两两交换链表中的节点

题目描述: 给一个链表,两两交换其中的节点,然后返回交换后的链表. 您在真实的面试中是否遇到过这个题? Yes 样例 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3. 挑战 你的算法只能使用常数的额外空间,并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 标签 链表 题目分析: 你的算法只能使用常数的额外空间,即不能新建链表: 并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 创建三个指针: head指向开始交换的

LintCode Python 简单级题目 407.加一

题目描述: 给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组. 该数字按照大小进行排列,最大的数在列表的最前面. 您在真实的面试中是否遇到过这个题? Yes 样例 给定 [1,2,3] 表示 123, 返回 [1,2,4]. 给定 [9,9,9] 表示 999, 返回 [1,0,0,0]. 标签 数组 谷歌 题目分析: 末尾[-1]加1,然后逆序循环,判断元素是否为10,然后处理: 特殊处理,[0]元素为10,需要在首位插入一个1. 源码: class Solution:

LintCode Python 简单级题目 60.搜索插入位置

题目描述: 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按顺序插入的位置. 你可以假设在数组中无重复元素. 您在真实的面试中是否遇到过这个题? Yes 样例 [1,3,5,6],5 → 2 [1,3,5,6],2 → 1 [1,3,5,6], 7 → 4 [1,3,5,6],0 → 0 挑战 O(log(n)) time 标签 数组 排序数组 二分法 题目分析: 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按

LintCode Python 简单级题目 433.岛屿的个数

题目描述: 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 您在真实的面试中是否遇到过这个题? Yes 样例 在矩阵: [ [1, 1, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1] ] 中有 3 个岛. 标签 脸书 谷歌 Zenefits 题目分析: 循环2维数组,找到其值为1的元素,count++, 然后递

LintCode Python 简单级题目 423.有效的括号序列

题目描述: 给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 您在真实的面试中是否遇到过这个题? Yes 样例 括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号. 标签 栈 谷歌 题目分析: 循环字符串,遇左括号入栈. 遇右括号,从栈顶取元素然后配对,判断配对结果. 最后再判断栈是否不为空. 源码: cla

LintCode Python 简单级题目 39.恢复旋转排序数组

题目描述: 给定一个旋转排序数组,在原地恢复其排序. 您在真实的面试中是否遇到过这个题? Yes 说明 什么是旋转数组? 比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3] 样例 [4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5] 挑战 使用O(1)的额外空间和O(n)时间复杂度 标签 数组 排序数组 题目分析: 挑战 使用O(1)的额外空间和O(n)时间复杂度 1.不建立新数组,在原数组