oj赛氪算法练习

开关灯2

java 复制代码
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();

        ArrayList<Integer> result = findClosedLamps(N);

        // 输出结果
        for (int i : result) {
            System.out.print(i + " ");
        }
    }

    private static ArrayList<Integer> findClosedLamps(int N) {
        ArrayList<Integer> closedLamps = new ArrayList<>();

        // 初始化数组,全部设置为 true 表示灯都是开着的
        boolean[] lamps = new boolean[N + 1];

        // 开关灯操作
        for (int i = 2; i <= N; i++) {
            for (int j = i; j <= N; j += i) {
                lamps[j] = !lamps[j];
            }
        }

        // 找到关闭的灯的编号
        for (int i = 1; i <= N; i++) {
            if (!lamps[i]) {
                closedLamps.add(i);
            }
        }

        return closedLamps;
    }
}
相关推荐
周杰伦fans9 分钟前
C# 中的**享元工厂**模式
开发语言·数据库·c#
历程里程碑11 分钟前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
2501_9411486114 分钟前
C++实时数据处理实战:多线程与异步IO结合高性能代码解析
java·后端·struts
u***u68515 分钟前
C++在系统中的异常处理
java·开发语言·c++
少许极端20 分钟前
算法奇妙屋(十四)-简单多状态dp问题
算法·动态规划·图解算法·简单多状态dp·打家劫舍问题·买卖股票问题全解
空空kkk22 分钟前
SpringMVC——拦截器
java·数据库·spring·拦截器
爱学测试的雨果23 分钟前
收藏!软件测试面试题
开发语言·面试·职场和发展
文涛是个小白呀26 分钟前
Java集合大调研
java·学习·链表·面试
我也爱吃馄饨33 分钟前
写的webpack插件如何适配CommonJs项目和EsModule项目
java·前端·webpack
Seven9740 分钟前
剑指offer-43、左旋转字符串
java