Pattern Reference
Number Tricks
"Numerical properties, digital root, self numbers, happy numbers, narcissistic numbers, Kaprekar, Ulam, perfect numbers."
Loading...
Deep Dive Tutorial
Digit extraction: last digit = n % 10, remove last digit = Math.floor(n/10). Reverse a number: pop digits and push into result. Palindrome check: reverse second half and compare with first half (handles even/odd length). Base conversion: repeated division by base gives digits in reverse. Roman numerals: scan left to right, subtract when smaller value appears before larger.
Reverse integer and palindrome number patterns
// Reverse integer — handle overflow
function reverseInt(x) {
let rev = 0;
while (x !== 0) {
const digit = x % 10; // extracts last digit (negative for negative x)
x = Math.trunc(x / 10);
rev = rev * 10 + digit;
}
// Check 32-bit signed integer overflow
if (rev < -(2**31) || rev > 2**31 - 1) return 0;
return rev;
}
// Palindrome number — reverse second half
function isPalindrome(x) {
if (x < 0 || (x % 10 === 0 && x !== 0)) return false;
let rev = 0;
while (x > rev) {
rev = rev * 10 + x % 10;
x = Math.floor(x / 10);
}
return x === rev || x === Math.floor(rev / 10); // even or odd length
}Worked Problems
hash
Digit extraction idioms:
- Last digit:
- Remove last digit:
- Palindrome check: reverse second half, compare (handles overflow)
- Base-k encoding: repeated modulo with reversed-digit reconstruction
1-indexed base-26 (Excel columns): Subtract 1 before modulo to convert from 1-indexed (A=1) to 0-indexed (A=0). Standard base conversion: subtract 0.
Overflow trick for palindrome: Instead of reversing the full number (overflow risk), only reverse the second half and compare. Stop when reversed ≥ remaining.
- Last digit:
n % 10- Remove last digit:
Math.trunc(n / 10) (trunc for negatives!)- Palindrome check: reverse second half, compare (handles overflow)
- Base-k encoding: repeated modulo with reversed-digit reconstruction
1-indexed base-26 (Excel columns): Subtract 1 before modulo to convert from 1-indexed (A=1) to 0-indexed (A=0). Standard base conversion: subtract 0.
Overflow trick for palindrome: Instead of reversing the full number (overflow risk), only reverse the second half and compare. Stop when reversed ≥ remaining.