解题思路:利用动态数组,先把所有的数字输入,然后当3或者3的倍数时,就移除
注意事项:
在处理移除的时候,要注意当数组元素个数等于下标的时候,要把下标置为0,不然的话,index会一直增加,超出索引
此处使用了num来计数,index来标记索引,这样的话,对下标的操作不会改变num,因为我们要找的是原来的位置,所以需要一个一直计数的东西
参考代码:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
ArrayList arr = new ArrayList(n);
for(int i = 1;i <= n;i++){
arr.add(i);
}
int num = 1;
int index = 0;
while(arr.size() != 1){
if(index == arr.size())
index=0;
if(num % 3 == 0){
arr.remove(index);
index--;
}
num++;
index++;
}
System.out.println(arr.get(0));
}
}
// =============Dragon be here!==========/
// ┏┓ ┏┓
// ┏┛┻━━━┛┻┓
// ┃ ┃
// ┃ ━ ┃
// ┃ ┳┛ ┗┳ ┃
// ┃ ┃
// ┃ ┻ ┃
// ┃ ┃
// ┗━┓ ┏━┛
// ┃ ┃神兽保佑
// ┃ ┃代码无BUG!
// ┃ ┗━━━┓
// ┃ ┣┓
// ┃ ┏┛
// ┗┓┓┏━┳┓┏┛
// ┃┫┫ ┃┫┫
// ┗┻┛ ┗┻┛
// ━━━━━━神兽出没━━━━━━
0.0分
0 人评分