【每日一题Day194】LC970强整数 | 枚举

简介: 【每日一题Day194】LC970强整数 | 枚举

强整数【LC970】

给定三个整数 xybound ,返回 值小于或等于 bound 的所有 强整数 组成的列表

如果某一整数可以表示为 xi + yj ,其中整数 i >= 0j >= 0,那么我们认为该整数是一个 强整数

你可以按 任何顺序 返回答案。在你的回答中,每个值 最多 出现一次。

思路

数据范围不大,因此可以枚举ij可能的组合,如果x或者y为1时,退出循环

  • 实现
class Solution {
    public List<Integer> powerfulIntegers(int x, int y, int bound) {
        Set<Integer> set = new HashSet<>();
        int i = 0, j = 0;
        int curX = 1;
        while (curX <= bound){
            int curY = 1;
            while (curX + curY <= bound){
                set.add(curX + curY);
                curY *= y;
                if (y == 1) break;
            }
            curX *= x;
            if (x == 1) break;
        }
        return new ArrayList<>(set);
    }
}

复杂度

  • 时间复杂度:O(log2bound)
  • 空间复杂度:O(log2bound)
目录
相关文章
|
6月前
【每日一题Day202】LC1015可被 K 整除的最小整数 | 模运算
【每日一题Day202】LC1015可被 K 整除的最小整数 | 模运算
66 2
|
6月前
【每日一题Day127】LC1238循环码排列 | 格雷码构造 位运算
【每日一题Day127】LC1238循环码排列 | 格雷码构造 位运算
51 0
【每日一题Day127】LC1238循环码排列 | 格雷码构造 位运算
|
6月前
【每日一题Day201】LC2436有效时间的数目 | 乘法原理 枚举
【每日一题Day201】LC2436有效时间的数目 | 乘法原理 枚举
45 2
|
6月前
【每日一题Day268】LC415字符串相加 | 模拟
【每日一题Day268】LC415字符串相加 | 模拟
46 0
|
6月前
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
41 0
|
6月前
|
算法
【每日一题Day347】LC136只出现一次的数字 | 位运算
【每日一题Day347】LC136只出现一次的数字 | 位运算
49 0
|
6月前
|
算法
【每日一题Day349】LC260只出现一次的数字 III | 位运算
【每日一题Day349】LC260只出现一次的数字 III | 位运算
44 0
|
6月前
【每日一题Day119】LC1250检查好数组 | 数学
【每日一题Day119】LC1250检查好数组 | 数学
46 0
|
6月前
【每日一题Day191】LC2423删除字符使频率相同 | 枚举 分类讨论
【每日一题Day191】LC2423删除字符使频率相同 | 枚举 分类讨论
49 0
|
6月前
【每日一题Day155】LC1630等差子数组 | 枚举+排序
【每日一题Day155】LC1630等差子数组 | 枚举+排序
42 0