AdSense

網頁

2020/4/30

求得小於n且為3或5的倍數的不重複數的總和

今天和同事聊天,他說最近他的女朋友在面試時被問到「給定一個值n,請求所有小於n且為3或5的不重複倍數的總和」。

接著就開始在白板想一下流程啦。馬上想到解決不重複的方式就是用Set,先算出3或5的倍數並放進Set中即可消除重複的值,最後再加總Set裡的值即可。

package com.abc.demo;

import java.util.*;

public class Main {

    public static void main(String[] args) {
        System.out.println(calculateSumOfNoRepeatMultiple(10, 3, 5));
    }

    private static int calculateSumOfNoRepeatMultiple(int n, int... vv) {
        Set set = new HashSet<>();
        for(int v : vv) {
            for(int i = 0 ; i <= n ; i++) {
                if (i % v == 0) {
                    set.add(i);
                }
            }
        }

        return set.stream().reduce(0, Integer::sum);
    }

}

時間複雜度"應該"是O(N)。

沒有留言:

AdSense