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;
    }
}
相关推荐
hweiyu007 小时前
Go Fiber 简介
开发语言·后端·golang
键来大师7 小时前
Android15 RK3588 修改默认不锁屏不休眠
android·java·framework·rk3588
合作小小程序员小小店9 小时前
web网页开发,在线%考试管理%系统,基于Idea,vscode,html,css,vue,java,maven,springboot,mysql
java·前端·系统架构·vue·intellij-idea·springboot
报错小能手9 小时前
刷题日常 5 二叉树最大深度
算法
多多*9 小时前
maven常用的命令
java·log4j·maven
xie_pin_an9 小时前
MyBatis-Plus 实战:MPJLambdaWrapper 多表联查用法全解析
java·spring boot·spring·mybatis
ᐇ9599 小时前
Java LinkedList集合全面解析:双向链表的艺术与实战
java·开发语言·链表
luyun02020210 小时前
Windows 11操作更丝滑,绝了
java·运维·figma
码银10 小时前
【数据结构】顺序表
java·开发语言·数据结构
Greedy Alg10 小时前
LeetCode 84. 柱状图中最大的矩形(困难)
算法