zoukankan      html  css  js  c++  java
  • 970. Powerful Integers

    Given three integers xy, and bound, return a list of all the powerful integers that have a value less than or equal to bound.

    An integer is powerful if it can be represented as xi + yj for some integers i >= 0 and j >= 0.

    You may return the answer in any order. In your answer, each value should occur at most once.

    Example 1:

    Input: x = 2, y = 3, bound = 10
    Output: [2,3,4,5,7,9,10]
    Explanation:
    2 = 20 + 30
    3 = 21 + 30
    4 = 20 + 31
    5 = 21 + 31
    7 = 22 + 31
    9 = 23 + 30
    10 = 20 + 32
    

    Example 2:

    Input: x = 3, y = 5, bound = 15
    Output: [2,4,6,8,10,14]
    

    Constraints:

    • 1 <= x, y <= 100
    • 0 <= bound <= 106
    class Solution {
        public List<Integer> powerfulIntegers(int x, int y, int bound) {
            Set<Integer> set = new HashSet();
            int a = 1;
            while(a < bound) {
                int b = 1;
                while(b < bound) {
                    if(a + b <= bound) set.add(a + b);
                    if(y == 1) break;
                    b *= y;
                }
                if(x == 1) break;
                a *= x;
            }
            return new ArrayList(set);
        }
    }

    a = a*x,b = b*y。a、b都从1开始。

    外循环是a<bound, 内循环是b < bound, 先算内循环的,如果a+b《= bound就添加到set中,但是如果y是1就break,否则剩下的全是11111,如果不是1就更新b。

    外循环也一样,如果x是1就直接break,否则就更新a = a*x。

    最后返回。

  • 相关阅读:
    图书馆管理系统

    有理数类的设计
    题目4-多关键字排序(基于自定义比较函数)
    图总结
    树、二叉树、查找算法总结
    数据结构小结
    C语言文件
    第二次博客作业
    第一次博客作业
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/14723722.html
Copyright © 2011-2022 走看看