2022-6-11 真题练习
作者:互联网
MT8 奇数位丢弃
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
描述
对于一个由 0..n 的所有数按升序组成的序列,我们要进行一些筛选,每次我们丢弃去当前所有数字中第奇数位个的数。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。 数据范围: 1 \le n \le 1000 \1≤n≤1000 ,本题有多组输入输入描述:
每组数据一行一个数字,为题目中的n(n小于等于1000)。输出描述:
一行输出最后剩下的数字。1 import java.util.*; 2 3 public class Main { 4 static class ListNode{ 5 ListNode next; 6 int value; 7 ListNode(int x){ 8 value=x; 9 } 10 } 11 public static void main(String[] args) { 12 Scanner sc=new Scanner(System.in); 13 while (sc.hasNext()){ 14 int n=sc.nextInt(); 15 ListNode dummy=new ListNode(-1); 16 ListNode point=dummy; 17 for (int i=0;i<=n;i++){ 18 point.next= new ListNode(i); 19 point=point.next; 20 } 21 int sum=n+1; 22 while (sum>1){ 23 int index=1; 24 ListNode head=dummy.next; 25 ListNode pre=dummy; 26 while (head!=null){ 27 if (index%2==1){ 28 pre.next=head.next; 29 head=head.next; 30 sum--; 31 }else{ 32 pre=head; 33 head=head.next; 34 } 35 index++; 36 } 37 } 38 System.out.println(dummy.next.value); 39 } 40 } 41 42 }
思路:链表模拟即可。
标签:11,dummy,head,ListNode,真题,int,next,2022,1000 来源: https://www.cnblogs.com/benbicao/p/16365833.html