ZZULIOJ Java1148: 组合三位数之一

Java全栈面试宝典:从P6到P8-10 答案: CAP定理说一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)中的两个。C:所有节点在同一时刻看到的数据一样。你写了一个值,立刻读,不管从哪个节点读,都能读到最新值。A:每个请求都能得到非错误的响应,即使某些节点挂了。系统一直能对外服务,不会返回超时或拒绝。P:网络分区发生时,系统仍能继续工作。网络分区就是节点之间网络不通了,但节点本身还活着。CAP不是"三选二",而是当网络分区发生时,你必须在C和 阅读详情
import java.util.Arrays;

public class Main {
    //判断是否有相同数字
    public static boolean isRepeat(int[] hasNum, int hasIndex, int x) {
        String s = String.valueOf(x);
        for (int i = 0; i < hasIndex; i++) {
            if (s.contains(String.valueOf(hasNum[i]))) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int hasIndex = 0;//已用数字的下标
        int sqrtIndex = 0;//完全平方根数字的下标
        int startAll=0;//三种组合失败后再重新开始数字
        int[] hasNum = new int[9];//已经用过的数字
        int[] sqrtNum = new int[3];//最终结果,三种完全平方数
        while (sqrtNum[2] == 0) {//如果第三个数找不到就一直循环
            for (int i = 1; i <= 9; i++) {//百位
                for (int j = 0; j <=9; j++) {//十位
                    for (int k = 0; k <=9; k++) {//个位
                        if (i == j || i == k || j == k) {//如果三个数一样就跳过
                            continue;
                        }
                        int x = i * 100 +j * 10 + k;//三个数组成的三位数
                        if (x <= startAll){//从上次失败的最小数字+1再开始
                            continue;
                        }
                        if (isRepeat(hasNum, hasIndex, x)) {//判读当前数是否包含已用数字
                            continue;
                        }
                        int n = (int) Math.sqrt(x);//开平方
                        if (n * n == x) {//开完平方再相乘是否等于原数
                            hasNum[hasIndex++] = i;//存入已用数字第一位下标+1
                            hasNum[hasIndex++] = j;//以此类推
                            hasNum[hasIndex++] = k;//以此类推
                            sqrtNum[sqrtIndex++] = x;//完全平方数存入第一位再+1
                        }
                    }
                }
            }
            if (sqrtNum[2]!=0){//判断是否三位数找到了
                break;
            }
            //第三位没找到就两个数字清零再从上次失败的第一个数+1开始找
            startAll=sqrtNum[0];//这次失败的第一个数
            //清零数据
            hasIndex = 0;
            sqrtIndex = 0;
            Arrays.fill(hasNum, 0);
            Arrays.fill(sqrtNum, 0);
        }
        //输出
        for (int i = 0; i < sqrtNum.length; i++) {
            System.out.printf("%d ", sqrtNum[i]);
        }
    }
}

华为OD机试真题精讲:求幸存数之和(Python/Java/C++多语言实现) 华为OD机试真题:求幸存数之和 问题概述 给定一个整数序列和淘汰步长k,按照约瑟夫环规则淘汰数字,直到剩余m个元素(m为原序列长度的一半,向下取整),计算剩余元素的和。 核心解法 约瑟夫环变种:循环计数并淘汰第k个元素,直到剩余元素数量达标 关键公式:(current_idx + k - 1) % len(arr)计算待淘汰元素索引 复杂度:O(n^2),符合题目要求 实现要点 Python:利用列表和取模运算简洁实现 Java:使用ArrayList处理元素删除 C++:通过vector高效操作序列 示例 阅读详情

相关推荐

华为OD机试新系统真题【信道资源分配与掩码运算】

华为OD机试 新系统真题【信道资源分配与掩码运算】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【信道资源分配与掩码运算】多语言题解。

qq_45776114的博客 280

ZZULIOJ 1148: 组合三位数之一,Java

把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。按从小到大的顺序输出这三个三位数,由空格隔开。

00后的博客 247

Spring 源码系列(23): SpringApplication.run() 启动全流程

本文深入解析了SpringApplication.run()的核心流程,通过源码拆解揭示了从启动到容器就绪的完整生命周期。文章重点分析了三个关键阶段:prepareEnvironment的配置加载逻辑(系统属性>环境变量>配置文件)、createApplicationContext的容器类型推断机制(基于classpath判断Web/Reactive/普通应用),以及callRunners的启动后回调特性(按@Order执行初始化任务)。同时澄清了常见误区,如内嵌Tomcat实际在refresh阶段的onR

不才不才不不才的博客 249

简单讲解Java--queue--三组成对出现的方法的区别

操作类型异常派(失败抛异常)特殊值派(失败返null/false)核心选型原则插入add(e)offer(e)生产者:优先用offer做流控;初始化填充用add做断言取出remove()poll()消费者:永远用pollnull判断;原子操作且确定非空时才用remove查看element()peek()只读场景:99%情况用peek;需要强制非空前置条件时用element终极避坑指南不要用remove()element()做轮询——异常栈生成代价极高(填充StackTrace),比if。

HDZW_ZQBX___的博客 383

Micrometer 系列【66】上下文传播工具库 | 案例演示

context-propagation 是 Micrometer 生态的跨线程上下文搬运协议层,本身零运行时依赖、不依赖 Spring、Micrometer 其他组件。

记录知识、锤炼自我 452

Java大厂面试实录:Spring Boot与微服务、Redis缓存、JWT安全、Prometheus监控全解析——记谢飞机的一次硬核面试

周六下午,互联网大厂“星河科技”的会议室里,阳光透过落地窗洒在长桌上。面试官李总眉头微蹙,翻看着眼前这位候选人的简历——谢飞机,三年Java开发经验,自我评价“精通全家桶”。对面,谢飞机正襟危坐,嘴角带着一丝自信到发光的微笑。李总推了推眼镜,语气平淡:“谢飞机先生,我们开始吧。今天聊电商后端场景,你平时写代码用什么Java版本?

2602_95996092的博客 268

Java 并发灵魂拷问:notify/signal 唤醒顺序是规范还是实现?

本文探讨了Java中Object.notify()和Condition.signal()唤醒线程的顺序问题。关键结论如下: Object.notify(): JVM规范未规定唤醒顺序,HotSpot实现虽采用FIFO(从WaitSet头部取线程),但这属于实现细节而非规范要求 由于synchronized是非公平锁,被唤醒线程需重新竞争锁,最终执行顺序无法保证 严禁业务代码依赖该顺序 Condition.signal(): 严格按FIFO顺序唤醒(AQS等待队列头部线程) 是设计约定,业务可合理依赖该特性

weixin_68315058的博客 143

【Spring Cloud Alibaba】Sentinel(三)

这里有个关键点:不是 “前 10 秒”,是。

Blue_Pepsi_Cola的博客 258

[Java]-微服务面试题

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是。2,我们还在skywalking设置了告警规则,特别是在项目上线以后,如果报错,我们分别设置了可以给相关负责人。简历上写的微服务,只要是发生了多个服务之间的写操作,都需要进行分布式事务控制。2,在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)

. 589

49. 【Java】JDK 21的虚拟线程(上):革命性的并发模型

本文深入解析JDK 21引入的虚拟线程(Virtual Threads)技术,从传统平台线程的资源瓶颈出发,阐述虚拟线程的轻量级特性、M:N调度模型及其工作原理。详细介绍了两种创建虚拟线程的方法,并通过性能对比实验展示其在I/O密集型场景下的显著优势。总结了虚拟线程的适用场景、使用注意事项以及与平台线程的核心差异,帮助开发者掌握这一革命性的并发编程工具。

gugucoding的博客 501

Java Spring 批量修改,实体、接口、方法的定义

本文描述了一个批量更新车辆类型的接口实现。该功能通过Controller层接收包含出库单ID列表和车辆类型的请求参数,调用Service层进行处理。实现层采用事务管理,首先验证参数有效性,然后查询对应出库单数据并批量更新车辆类型字段,最后返回操作结果(成功更新记录数或错误信息)。该接口主要用于快递业务中其他出库单的车辆类型批量修改操作,包含完整的参数校验、异常处理和事务管理机制。

LYBWWP 35

并发 13 · 异步编排

摘要:本文探讨了异步编排在秒杀下单场景中的应用,分析了传统Future的局限性,并介绍了CompletableFuture如何通过链式调用解决任务依赖与并行问题。文章详细讲解了创建异步任务、串联任务(thenApply/thenCompose)、合并任务(thenCombine/allOf)以及异常处理等核心方法,强调使用独立线程池避免阻塞公共资源。最后结合秒杀案例,展示了如何构建高效、清晰的异步流水线,优化响应时间。全文提供代码示例和选型建议,帮助开发者实现高性能异步流程编排。

记录后端技术的深水区:MySQL、并发、JVM、分布式。原理为主,实战为辅,能少踩一个坑是一个。 371

零信任架构实战:基于天远企业年报信息核验构建自动化供应商准入网关

破解供应商准入核查痛点:从传统人工资质初筛到自动化数据穿透 在大型 B2B 供应链采购平台的微服务架构中,供应商准入尽职调查(KYC)是保障平台交易生态健康的核心防线。传统的准入流程往往依赖业务人员手工收取企业营业执照、年度审计报告等纸质或电子扫描件,并登录多平台逐一核对。这种模式不仅流程繁琐、效率极低,而且难以实时防范非存续异常主体或信息不匹配资质的问题,

2501_94042197的博客 197

家政派单系统开发实战:架构设计与派单算法指南

家政派单系统是连接用户需求与上门服务人员的核心调度平台,其开发难点并不在于简单的CRUD,而是在于如何设计一套能支撑“多角色、多任务类型、高并发抢单”的架构,以及一套能让订单和师傅效率化的派单算法。一旦师傅手动拒绝系统派单,近1小时的接单权重下降50%,防止师傅只接高价单而忽略普通单,导致用户体验受损。建议优先搭建一个可配置化的规则引擎,将派单距离、服务类目、师傅等级做成后台可调整的配置项,这样后期运营调整策略时,无需修改代码。师傅接单后的轨迹追踪,是提升用户体验的关键,也是开发的难点。

zww8949111的博客 307

Helm Chart依赖管理实战

在kind: Podmetadata:spec:关键注解说明:标记为测试 Hook:测试成功后自动删除 Pod。

m0_52572472的博客 222

全国计算机二级Java选择题高频真题20道精选与试题解析

全国计算机等级考试二级Java语言程序设计选择题20道高频真题与标准试题解析,深度剖析二叉树度数计算、异常捕获匹配、多态向上转型、位运算、集合框架与多线程接口。

qq_39121450的博客 188

@Value与@ConfigurationProperties注解使用记录

本文探讨了从YAML配置文件中获取Map类型数据的两种方案:使用@Value注解和@ConfigurationProperties注解。作者首先尝试@Value方案,发现其无法直接注入Map且扩展性差,只能获取单个键值。随后转向@ConfigurationProperties方案,但遇到Map键中的冒号被自动过滤的问题。最终解决方案是调整YAML结构为列表形式,并创建包含key-value对的内部类Item,通过转换方法toMap()获取所需Map结构。文章强调了YAML配置项需采用kebab-case(短

AlickLbc的博客 130

Semaphore 源码解析

摘要: Semaphore是Java并发编程中的计数信号量工具,基于AQS(AbstractQueuedSynchronizer)实现,提供共享模式下的线程同步功能。其核心特性包括: 通过acquire/release方法获取/释放许可,许可数量可动态调整; 支持公平/非公平两种模式(FairSync/NonfairSync),公平模式保证先到先得; 内部使用CAS操作和自旋机制保证线程安全; 提供tryAcquire、drainPermits等扩展方法; 任何线程均可释放许可,不要求先获取许可。

赵丙双的博客 195
上一篇: ZZULIOJ Java1147: 查找子数组
下一篇: ZZULIOJ Java1154: 校门外的树
导员儿
博客等级 码龄5年 3粉丝 · 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值