今年7月份vivo迎来了新入职的大学生,现在需要为每个新同事分配一个工号。人力资源部同事小v设计了一个方法为每个人进行排序并分配最终的工号,具体规则是:
将N(N<10000)个人排成一排,从第1个人开始报数;如果报数是M的倍数就出列,报到队尾后则回到队头继续报,直到所有人都出列;
最后按照出列顺序为每个人依次分配工号。请你使用自己擅长的编程语言帮助小v实现此方法。


import java.io.*;
import java.util.*;/***时间限制:1秒    空间限制:32768K今年7月份vivo迎来了新入职的大学生,现在需要为每个新同事分配一个工号。人力资源部同事小v设计了一个方法为每个人进行排序并分配最终的工号,具体规则是:将N(N<10000)个人排成一排,从第1个人开始报数;如果报数是M的倍数就出列,报到队尾后则回到队头继续报,直到所有人都出列;最后按照出列顺序为每个人依次分配工号。请你使用自己擅长的编程语言帮助小v实现此方法。输入描述:输入2个正整数,空格分隔,第一个代表人数N,第二个代表M:输出描述:输出一个int数组,每个数据表示原来在队列中的位置用空格隔开,表示出列顺序:输入例子1:6 3输出例子1:3 6 4 2 5 1例子说明1:6个人排成一排,原始位置编号即为1-6。最终输出3 6 4 2 5 1表示的是原来编号为3的第一个出列,编号为1的最后一个出列。*/
//运行时间: 140 ms 占用内存:14236K 使用SpringBuilder存储输出值
//运行时间: 170 ms 占用内存:15100K 使用Springbuffer存储输出值
//运行时间: 184 ms 占用内存:15180K 使用arraylist存储输出值(多一步转为string之后删除中括号与逗号的步骤)
public class StudentId {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String inputStr = br.readLine();int input[] = parseInts(inputStr.split(" "));String output = solution(input);System.out.println(output);}private static int[] parseInts(String[] strArr) {if (strArr == null || strArr.length == 0) {return new int[0];}int[] intArr = new int[strArr.length];for (int i = 0; i < intArr.length; i++) {intArr[i] = Integer.parseInt(strArr[i]);}return intArr;}private static String solution(int[] input) {// TODO Write your code hereint count = 0;//存储上一个分配到学号的位置int input1 = input[1];//int input0 = input[0];//List<Integer> list = new ArrayList<>();StringBuilder result = new StringBuilder();//List<Integer> keyList = new ArrayList<>();for(int e=1;e<=input0;e++){list.add(e);}for(int i=1;list.size()>0;i++){if(i%input1==0){result.append(list.remove(count)+" ");}else {count++;}if(count>=list.size()){count-=list.size();}}//String result = keyList.toString();/*result=result.replaceAll("\\[","").replaceAll("\\[","");result=result.replaceAll("]","").replaceAll("]","");result=result.replaceAll(",","").replaceAll(",","");*/return result.toString();}
}

第一次写的没用list存储列表remove的方法,要多加一个判断是否存在的循环,结果用时过长。使用String类型存储输出结果,耗时长达七百多毫秒。
此题为约瑟夫问题又称丢手绢问题。

vivo2020校招笔试题[编程题]报数(约瑟夫问题又称丢手绢问题)-java解决相关推荐

  1. 腾讯 2015秋招笔试题 编程题2:九宫格填数

    腾讯 2015秋招笔试题 编程2:九宫格填数 题目 2: 有下图的题解,请用 C/C++ 代码来列出满足下图 0-100 内的所有答案. 配合加减乘除,使得九宫格横竖都等于4. 智力冲浪 数字推理 请 ...

  2. 美团点评2020校招系统开发方向笔试题(编程题题解)

    这套笔试题的编程题很简单,感觉没什么可以写的题解的 [编程题]大数加法 注意下负号的情况 #include <bits/stdc++.h> using namespace std; typ ...

  3. 【阿里21校招笔试题】【日常生活】【BUG日记】我真是个呆瓜!居然不会写冒泡排序了,我吐了!结果阿里的校招笔试题一题都没做好!!!我人真的傻了!就卡在排序上!!!

    [记录]:记录一次呆瓜日记,自己真是一个大傻子. [经过]:今天晚上在做阿里校招的笔试题的时候,我人傻了.固定一个小时,做两道编程题,结果第一题都没做完. [题1]:(只记得大概需求)输入一个数n,再 ...

  4. 搜狗校招笔试题编程之一

    题目: 定义两个合数的距离为两个合数之间的质数的个数.现在输入n个偶数,求这n个偶数两两距离的和. 输入:第一行输入一个整数n. 第二行到第n+1行为从小到大排序的n个合数. 输出:输出一个数为总的距 ...

  5. 阿里巴巴2015校招笔试题附加题1解答

    public interface IntegralExchange {public void creatOrder(String userId,String boxId);public void re ...

  6. 2021滴滴笔试题算法题

    2021滴滴笔试题 编程题第一题: 大概是:一个优秀的操作系统,应该具有一个好的分配任务的算法,现在假设 一个任务具有等待时间和执行时间,且必须在先等待后执行,而计算机每次只能执行一个任务,但可以等待 ...

  7. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  8. 数据分析真题日刷 | 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷

    今日真题 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷(来源:牛客网) 题型 客观题:单选5道,不定项选择10道 主观题:问答4道 完成时间 90分钟 牛客网评估难度系数 ...

  9. 小米运维部14年校招笔试题A的个人答案

    15年准备实习生面试时答的题,仅供参考 具体题目详见  http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...

最新文章

  1. 详解目标检测之Neck选择
  2. Android应用程序进程启动过程的源代码分析(1)
  3. 避免成为调包侠,从数学角度再看深度学习
  4. 从零开始入门 | Kubernetes 中的服务发现与负载均衡
  5. Linux虚拟机最小化安装后转换成图形界面(图文详解)
  6. php fsockopen socket,PHP利用socket(fsockopen)的简单示例
  7. 数据安全,配置先行;如何检查,SQL 评估 API
  8. ivew ui 中使用Menu组件时导航菜单 active-name 无法动态激活问题
  9. [HTML5]块和内联元素的嵌套
  10. 好莱坞法则_人工智能去好莱坞
  11. Python深度学习(什么是深度学习)----学习笔记(一)
  12. Pr 入门教程如何减少音频中的噪音和混响?
  13. 值得收藏:一份非常完整的MySQL规范
  14. 高频迷你信号发生器性能及其优势
  15. Android实现VR查看图片
  16. 联想Y430P CentOS 7.3 无线网络的配置
  17. 微软面试题之数字谜题方案
  18. $(...)[0].attr is not a function
  19. HTTP协议请求响应报文相关介绍
  20. dedecms 主要模板文件与功能说明

热门文章

  1. 2016计算机三级网络技术,计算机三级网络试题及答案解析2016
  2. 基于matlab的热红外图像温度检测
  3. 《MIT 6.828 Lab 1 Exercise 10》实验报告
  4. 美通企业周刊 | 联合利华投10亿欧元设气候与自然基金;斯凯孚扩建浙江新昌工厂...
  5. 计算机毕设Python+Vue在线药物配送系统(程序+LW+部署)
  6. C++:94---类继承(菱形继承、虚继承(virtual虚基类))
  7. 【转】InstallSheild创建网站的脚本 mkw3site.vbs
  8. “我爱记单词”软件的用户调研报告
  9. BZOJ1191 超级英雄Hero
  10. OpenSUSE 初始化设置