其他分享
首页 > 其他分享> > 2022-6-11 真题练习

2022-6-11 真题练习

作者:互联网

MT8 奇数位丢弃   warning 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地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