633. Sum of Square Numbers

LeetCode medium original: C# #csharp #leetcode #math #medium #search #two-pointers
El texto de la tarea se traduce del ruso para el idioma seleccionado. El código no cambia.

given целое неотрицательное number c, решите, существуют ли два целых числа a и b такие, что a2 + b2 = c.

Ejemplo:

Input: c = 5

Output: true

C# solución

coincidente/original
import kotlin.math.sqrt
class Solution {
    fun judgeSquareSum(c: Int): Boolean {
        var a = 0
        var b = sqrt(c.toDouble()).toInt()
        while (a <= b) {
            val total = a * a + b * b
            if (total == c) {
                return true
            } else if (total < c) {
                a++
            } else {
                b--
            }
        }
        return false
    }
}

C++ solución

borrador automático, revisar antes de enviar
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
import kotlin.math.sqrt
class Solution {
    fun judgeSquareSum(c: Int): Boolean {
        var a = 0
        var b = sqrt(c.toDouble()).toInt()
        while (a <= b) {
            val total = a * a + b * b
            if (total == c) {
                return true
            } else if (total < c) {
                a++
            } else {
                b--
            }
        }
        return false
    }
}

Java solución

borrador automático, revisar antes de enviar
import java.util.*;
import java.math.*;

// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
import kotlin.math.sqrt
class Solution {
    fun judgeSquareSum(c: Int): Boolean {
        var a = 0
        var b = sqrt(c.toDouble()).toInt()
        while (a <= b) {
            val total = a * a + b * b
            if (total == c) {
                return true
            } else if (total < c) {
                a++
            } else {
                b--
            }
        }
        return false
    }
}

Algorithm

Проверка границ

Проверьте, если c меньше 0, немедленно return false, так как сумма квадратов двух целых чисел не может быть отрицательной.

Инициализация указателей

Используйте два указателя a и b. Инициализируйте a на 0 и b на значение квадратного корня из c. Поиск решения: Используйте цикл для поиска a и b, таких что a^2 + b^2 == c: Если a^2 + b^2 равно c, return true. Если a^2 + b^2 меньше c, увеличьте a на 1. Если a^2 + b^2 больше c, уменьшите b на 1.

Возвращение результата

Если цикл завершится без нахождения подходящих a и b, return false.

😎

Vacantes para esta tarea

Se muestran vacantes activas con etiquetas coincidentes.

Todas las vacantes
Todavía no hay vacantes activas.