题解 | 小红的排列构造 - 找规律 + 模拟

小红的排列构造

https://www.nowcoder.com/practice/a4ec29e74aaa450aa8a4200fe3b06308

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String S = in.next();
        char[] s = S.toCharArray();
	  
	  	// 末尾为0的字符串肯定是无解的
        if (s[n - 1] == '0') {
            System.out.println("-1");
            return;
        }

        List<Integer> ans = new ArrayList<>();
        int pre = 1; // 这里需要设置成1,有可能是001,最终需要补充1
        for (int i = 1; i <= n; i++) {
            if (s[i - 1] == '0') {
                ans.add(i + 1);
                // pre表示当前缺失的元素,比如0101,遍历到第一个1时,pre = 1需要补充1;遍历到第二个1的时候,pre=3,需要补充3;
                // 对于001的情况,最后需要补充的是第一0所对应的数字1
                if(i - 2 >= 0 && s[i - 2] != '0') {
                    pre = i;
                }
            } else {
                // 遇到连续的1或者第一个为1的话,就补充当前位置的数字
                if((i - 2 >= 0 && s[i - 2] == '1') || i == 1) {
                    ans.add(i);
                } else { // 否则补充之前缺失的pre
                    ans.add(pre);
                }
            }
        }

        for(int i = 0; i < n; i++) {
            if(i < n - 1) {
                System.out.print(ans.get(i) + " ");
            } else {
                System.out.print(ans.get(i));
            }
            
        }
    }
}

全部评论

相关推荐

03-15 00:45
已编辑
中国科学院大学 Java
问的很简单都秒了,但是面试官没开摄像头,疑似kpi,无后续。--------------------3/14更新,3/12通知给了口头offer,3/13发了意向书,已拒。一面(35min)(25/3/6)(无后续)&nbsp;&nbsp;&nbsp;&nbsp;1、自我介绍&nbsp;&nbsp;&nbsp;&nbsp;2、介绍一下你的那个Python相关项目(本科毕设,web系统+算法模型提供部分接口)&nbsp;&nbsp;&nbsp;&nbsp;3、Java面向对象有哪些特点呢?详细说一下。&nbsp;&nbsp;&nbsp;&nbsp;4、介绍一下hashmap;为什么要把链表转换为红黑树呢?红黑树查找的时间复杂度?1.7和1.8的区别。&nbsp;&nbsp;&nbsp;&nbsp;5、介绍一下concurrentHashmap。&nbsp;&nbsp;&nbsp;&nbsp;6、synchronized锁和Lock锁有什么区别?&nbsp;&nbsp;&nbsp;&nbsp;7、公平锁的一个底层是怎么实现的呢?&nbsp;&nbsp;&nbsp;&nbsp;8、线程池的核心参数、拒绝策略、提交一个任务执行流程?&nbsp;&nbsp;&nbsp;&nbsp;9、spring有哪些特点?(ioc/aop)&nbsp;&nbsp;&nbsp;&nbsp;10、spring中对于循环依赖是怎么解决的?&nbsp;&nbsp;&nbsp;&nbsp;11、MySQL和redis的区别?&nbsp;&nbsp;&nbsp;&nbsp;12、MySQL的索引结构是什么?&nbsp;&nbsp;&nbsp;&nbsp;13、MySQL的事务有哪些特性?怎么保证?&nbsp;&nbsp;&nbsp;&nbsp;14、MySQL的默认隔离级别?可重复读是怎么做到的呢?&nbsp;&nbsp;&nbsp;&nbsp;15、介绍一下MVCC和快照读readview。&nbsp;&nbsp;&nbsp;&nbsp;16、一般在什么场景下会使用redis?&nbsp;&nbsp;&nbsp;&nbsp;17、对于大量的请求,如果此时缓存中还没有写入数据怎么办?&nbsp;&nbsp;&nbsp;&nbsp;18、介绍一下redis实现的分布式锁。&nbsp;&nbsp;&nbsp;&nbsp;19、有用过es和mongo&nbsp;DB吗?(知道,没用过)&nbsp;&nbsp;&nbsp;&nbsp;20、消息中间件用过吗?说一下你的使用场景?&nbsp;&nbsp;&nbsp;&nbsp;21、一个场景,如果说有一个接口响应的比较慢,如果说让你排查,你会怎么去排查?(上下游接口、大key问题,只答了两,后面试官补充)&nbsp;&nbsp;&nbsp;&nbsp;无手撕,反问业务。
胖墩墩的查理在学c语言:哥们我是五号面的 流程差不多
查看21道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务