Рубрики
Без рубрики

Решайте Проблемы С Leetcode и Получайте Предложения От Компаний Вашей Мечты | Проблема 202. Счастливое число(Легко)

Решайте Проблемы С Кодом Leet и Получайте Предложения От Компаний Вашей Мечты.

Автор оригинала: Nilmadhab mondal.

Начните писать Задачу 202. Счастливое число (Легко Ввести Код)

Альтернативный Текст

В этой серии я собираюсь решить проблемы со средой Leetcode в прямом эфире со своим другом, которые вы можете увидеть на нашем канале YouTube, Сегодня мы займемся проблемой 202. Счастливое число .

Немного обо мне, у меня есть предложения от Uber Индия и Амазонка Индия в прошлом, и в настоящее время я работаю на Booking.com в Амстердаме.

Мотивация к изучению алгоритмов

высокий звук

Постановка проблемы

Напишите алгоритм, чтобы определить, является ли число n счастливым.

Счастливое число-это число, определяемое следующим процессом:

  • Начиная с любого положительного целого числа, замените число суммой квадратов его цифр.
  • Повторяйте процесс до тех пор, пока число не станет равным 1 (где оно останется), или оно бесконечно повторяется в цикле , который не включает 1.
  • Те числа, для которых этот процесс заканчивается на 1 , являются счастливыми.

Возврат true если n – счастливое число, и ложно если нет.

Пример 1: Вход: Выход: истинное объяснение: 12 + 82 + 62 + 12 + 02 + Пример 2:

Вход: Выход: ложь

Обсуждение на Youtube

высокий звук

Решение

Это основная проблема, основанная на рекурсии. Нам нужно заменить число суммой квадратов его цифр. Нам нужно повторять этот процесс до тех пор, пока число не станет 1, или оно будет бесконечно повторяться в цикле. В случае достижения 1 мы должны вернуть true или false.

Поэтому, чтобы отслеживать все последние встреченные числа, мы можем использовать хэш-набор, а затем мы можем продолжать проверять, присутствует ли наш текущий номер в этом хэш-наборе или нет. Если он присутствует , то мы немедленно завершаем метод и возвращаем false , иначе мы продолжаем находить сумму квадратов его цифр.

Ниже приведен Java-код для данной проблемы.

высокий звук

Код C++ приведен ниже.

высокий звук

class LC202 {
public:
    int convert(int n){
        int ans = 0;
        while(n){
            
            ans += pow(n%10, 2);
      n/=10;
        
        }
        return ans;
    }
    
    bool isHappy(int n) {
        bool map[1000];
      
        memset(map, 0, sizeof(map));
    
        n = convert(n);
        
        while(!map[n]){
      map[n] = true;
            if(n == 1)
                return true;   
      n = convert(n);
        }
        
        return false;
    }
};

Код для этой проблемы можно найти в следующем репозитории.

высокий звук

Оригинал: “https://www.codementor.io/@nilmadhab/solve-leetcode-problems-and-get-offers-from-your-dream-companies-problem-202-happy-number-easy-1ehwg33ool”