62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
int n = 17;
delete(list, n);
}
public static void delete(List<Integer> list, int n) {
int temp = 0;
if (list.size() != 0) {
if (n > list.size()) {
temp = n % list.size();
System.out.println("多出:"+temp);
list.remove(temp);
System.out.println("删除下标:"+temp+"成功");
}else{
System.out.println("并没有多余数,直接删除");
list.remove(n);
}
}
}
}
各位大神看看有没有什么问题,我是培训机构出来的所以做的简单一点,希望不要吐槽啦。
int index = 0;
while(list.size()>1) {
index = (index+n-1)%list.size(); //n自己确定
list.remove(index);
}
public class ListTest {
private int i;
public static int num = 7;
public static void main(String[] args) {
List<Integer> list = new LinkedList<Integer>();
for (int index = 1; index <= 50; index++) {
list.add(index);
if (50 == index) {
delete(list, 7);
}
}
}
// List集合删除
public static void delete(List<Integer> list, int n) {
System.out.println("list集合长度==>" + list.size() + "\tn的值==>" + n);
if (list.size() != 0) {
if (n <= list.size()) {
//System.out.println("n的值==>" + n);
System.out.println(list.get(n - 1) + "被删除了");
list.remove(n - 1);
n = num + n - 1;
} else {
n = n % list.size();
if (n == 0) {
//System.out.println("n的值==>" + n);
System.out.println(list.get(list.size() - 1) + "被删除了");
list.remove(list.size() - 1);
} else {
//System.out.println("n的值==>" + n);
System.out.println(list.get(n - 1) + "被删除了");
list.remove(n - 1);
}
n = num + n - 1;
}
delete(list, n);
} else {
System.out.println("删除完毕:list.size() = " + list.size());
}
}
}
public class ListTest {
private int i;
public static int num = 7;
public static void main(String[] args) {
List<Integer> list = new LinkedList<Integer>();
for (int index = 1; index <= 50; index++) {
list.add(index);
if (50 == index) {
delete(list, 7);
}
}
}
// List集合删除
public static void delete(List<Integer> list, int n) {
System.out.println("list集合长度==>" + list.size() + "\tn的值==>" + n);
if (list.size() != 0) {
if (n <= list.size()) {
//System.out.println("n的值==>" + n);
System.out.println(list.get(n - 1) + "被删除了");
list.remove(n - 1);
n = num + n - 1;
} else {
n = n % list.size();
if (n == 0) {
//System.out.println("n的值==>" + n);
System.out.println(list.get(list.size() - 1) + "被删除了");
list.remove(list.size() - 1);
} else {
//System.out.println("n的值==>" + n);
System.out.println(list.get(n - 1) + "被删除了");
list.remove(n - 1);
}
n = num + n - 1;
}
delete(list, n);
} else {
System.out.println("删除完毕:list.size() = " + list.size());
}
}
}
看一下这个,亲测可用public void delete(List list,int n) {
while(list.size()!=0) {
int temp=list.size();
if((n%temp)!=0) {
list.remove(n-1);
}else {
list.remove(temp-1);
}
}
不知道这样可否? public static void delete(List<Integer> list, int n) {
int temp = 0;
int temp2 = 0;
if (list.size() != 0) {
if (n <= list.size()) {
list.remove(n);
temp2 = 2 * n ;
} else {
temp = n % list.size();
list.remove(temp);
temp2 = temp + n;
}
delete(list, temp2);
} else {
System.out.println("list.size() = " + list.size());
}
}
不知道是不是满足你的要求?