263. Ugly Number

LeetCode easy original: C# #array #csharp #easy #leetcode
题目文本会按所选界面语言从俄语翻译;代码保持不变。

Уродливое number — это положительное 整数, простые множители которого ограничены числами 2, 3 и 5.

given 整数 n, return true, если n является уродливым numberм.

示例:

Input: n = 6

Output: true

Explanation: 6 = 2 × 3

C# 解法

匹配/原始
public class Solution {
    public bool IsUgly(int n) {
        if (n <= 0) {
            return false;
        }
        foreach (int factor in new int[] {2, 3, 5}) {
            n = KeepDividingWhenDivisible(n, factor);
        }
        return n == 1;
    }
    private int KeepDividingWhenDivisible(int dividend, int divisor) {
        while (dividend % divisor == 0) {
            dividend /= divisor;
        }
        return dividend;
    }
}

C++ 解法

自动草稿,提交前请检查
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public bool IsUgly(int n) {
        if (n <= 0) {
            return false;
        }
        foreach (int factor in new int[] {2, 3, 5}) {
            n = KeepDividingWhenDivisible(n, factor);
        }
        return n == 1;
    }
    private int KeepDividingWhenDivisible(int dividend, int divisor) {
        while (dividend % divisor == 0) {
            dividend /= divisor;
        }
        return dividend;
    }
}

Java 解法

匹配/原始
class Solution {
    public boolean isUgly(int n) {
        if (n <= 0) {
            return false;
        }
        for (int factor : new int[] {2, 3, 5}) {
            n = keepDividingWhenDivisible(n, factor);
        }
        return n == 1;
    }

    private int keepDividingWhenDivisible(int dividend, int divisor) {
        while (dividend % divisor == 0) {
            dividend /= divisor;
        }
        return dividend;
    }
}

JavaScript 解法

匹配/原始
class Solution {
    isUgly(n) {
        if (n <= 0) {
            return false
        }
        for (const factor of [2, 3, 5]) {
            n = this.keepDividingWhenDivisible(n, factor)
        }
        return n === 1
    }

    keepDividingWhenDivisible(dividend, divisor) {
        while (dividend % divisor === 0) {
            dividend /= divisor
        }
        return dividend
    }
}

Python 解法

匹配/原始
class Solution:
    def isUgly(self, n: int) -> bool:
        if n <= 0:
            return False
        for factor in [2, 3, 5]:
            n = self.keepDividingWhenDivisible(n, factor)
        return n == 1

    def keepDividingWhenDivisible(self, dividend: int, divisor: int) -> int:
        while dividend % divisor == 0:
            dividend //= divisor
        return dividend

Go 解法

匹配/原始
package main

func isUgly(n int) bool {
    if n <= 0 {
        return false
    }
    for _, factor := range []int{2, 3, 5} {
        n = keepDividingWhenDivisible(n, factor)
    }
    return n == 1
}

func keepDividingWhenDivisible(dividend, divisor int) int {
    for dividend%divisor == 0 {
        dividend /= divisor
    }
    return dividend
}

Algorithm

1️⃣

Если данное 整数 n неположительное, return false, так как неположительное number не может быть уродливым.

2️⃣

Определите функцию keepDividingWhenDivisible, которая принимает два аргумента: делимое и делитель. Эта функция будет делить делимое на делитель до тех пор, пока оно делится без остатка. Функция returns измененное делимое. Последовательно примените эту функцию к n с делителями 2, 3 и 5.

3️⃣

Если после всех делений n равно 1, return true, иначе return false.

😎

Vacancies for this task

活跃职位 with overlapping task tags are 已显示.

所有职位
目前还没有活跃职位。