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;
    }
}
相关推荐
fire-flyer1 小时前
Spring Boot 源码解析之 Logging
java·spring boot·spring·log4j·logging
papership1 小时前
【入门级-C++程序设计:12、文件及基本读写-文件的基本概念&文本文件的基本操作】
开发语言·c++·青少年编程
SaleCoder2 小时前
用Python构建机器学习模型预测股票趋势:从数据到部署的实战指南
开发语言·python·机器学习·python股票预测·lstm股票模型·机器学习股票趋势
KoiHeng2 小时前
部分排序算法的Java模拟实现(复习向,非0基础)
java·算法·排序算法
cui_hao_nan5 小时前
JVM——如何对java的垃圾回收机制调优?
java·jvm
熟悉的新风景7 小时前
springboot项目或其他项目使用@Test测试项目接口配置-spring-boot-starter-test
java·spring boot·后端
心平愈三千疾7 小时前
学习秒杀系统-实现秒杀功能(商品列表,商品详情,基本秒杀功能实现,订单详情)
java·分布式·学习
玩代码7 小时前
备忘录设计模式
java·开发语言·设计模式·备忘录设计模式
BUTCHER58 小时前
Docker镜像使用
java·docker·容器
岁忧8 小时前
(nice!!!)(LeetCode 面试经典 150 题 ) 30. 串联所有单词的子串 (哈希表+字符串+滑动窗口)
java·c++·leetcode·面试·go·散列表