java实现list清除重复的字符串;arraylist动态数组;角谷定理最终得1,找出10000以内哪个数字的步骤最长

本文介绍了一种使用Java去除列表中重复元素的方法,并通过一个具体示例演示了角谷猜想(Collatz conjecture)的验证过程。该程序不仅展示了如何遍历列表并移除重复项,还实现了对一系列正整数应用角谷操作直至达到1的过程。



import java.util.ArrayList;
import java.util.List;


public class ClearRepeat {


/**
* @param args
*/
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("abc");
list.add("efg");
list.add("ghi");
list.add("ghi");
list.add("ghi");
list.add("efg");
for (int i = 0; i < list.size();i++) {
int j=list.lastIndexOf(list.get(i));
if (i!=j) {
list.remove(j);
i--;//每次有重复都让i回到初始位置,i==j时才可以向下循环
}

}
System.out.println(list);
}

}


角谷定理说: 任何一个正整数,如果是偶数,则除以2,如果是奇数则乘以3再加1,如此反复,必能最终得到1。

比如对9,输出:

9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class DynamicArray {


/**
* @param args
*/
public static void main(String[] args) {
/*Scanner scanner=new Scanner(System.in);

int x=scanner.nextInt();*/

//定义个最大的变量,随着循环而改变

List<Integer> max=new ArrayList<Integer>();
for (int x = 3; x < 10000; x++) {
int temp=x;
List<Integer> list=new ArrayList<Integer>();
while (temp!=1) {

list.add(temp);
if (temp%2==0) {
temp/=2;

}
else {
temp=temp*3+1;

}
}
if (list.size()>max.size()) {
max=list;
}

}

for (int i = 0; i < max.size(); i++) {
System.out.print(max.get(i)+" ");
}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值