50,528
社区成员
发帖
与我相关
我的任务
分享
List<Integer> nums=new ArrayList<Integer>();
for (int i = 1; i < 11; i++) {
nums.add(i);
}
int index=4,step=2;
while(nums.size()>step) {
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(index));
nums.remove(index);
index=(index+step)%nums.size();
}
}
约瑟夫环呗 通过取模运算来拿值
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import org.apache.commons.collections.CollectionUtils;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(42);
list.add(12);
for (int i = 0; i < 37; i++) {
list.add(i);
}
List<Integer> result = gogo(list, 6, 5, 10);
System.out.println(JSON.toJSONString(result));
}
public static List<Integer> gogo(List<Integer> list, int startNum, int interval, int total) {
if (CollectionUtils.isEmpty(list) || total == 0) {
return null;
}
//不排序
List<Integer> sortedList =list;
int size = sortedList.size();
List<Integer> result = new ArrayList<>();
if (sortedList.contains(startNum)) {
result.add(startNum);
} else {
return null;
}
int i = 0;
int startNumIndex = -1; //第一个数字的下标
int nextNum = startNum + (interval + 1);
for (; ; ) {
if (result.size() == total) {
break;
}
if (i == size) {
i = 0;
}
Integer integer = sortedList.get(i);
if (integer == null) {
i++;
continue;
}
if (integer == startNum && startNumIndex == -1) {
startNumIndex = i;
nextNum = startNum + (interval + 1);
i++;
continue;
}
if (integer == nextNum) {
result.add(integer);
nextNum += (interval + 1);
if(startNumIndex == -1){
startNumIndex = i;
}
i++;
continue;
}
if (i == startNumIndex) {
//循环一圈了没发现下一个满足的数字了 终止
break;
}
i++;
}
return result;
}
}
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import org.apache.commons.collections.CollectionUtils;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(42);
for (int i = 0; i < 37; i++) {
list.add(i);
}
List<Integer> result = gogo(list, 6, 5, 10);
System.out.println(JSON.toJSONString(result));
}
public static List<Integer> gogo(List<Integer> list, int startNum, int interval, int total) {
if (CollectionUtils.isEmpty(list) || total == 0) {
return null;
}
//不排序
List<Integer> sortedList =list;
int size = sortedList.size();
List<Integer> result = new ArrayList<>();
if (sortedList.contains(startNum)) {
result.add(startNum);
} else {
return null;
}
int i = 0;
int startNumIndex = -1; //第一个数字的下标
int nextNum = startNum + (interval + 1);
for (; ; ) {
if (result.size() == total) {
break;
}
if (i == size) {
i = 0;
}
Integer integer = sortedList.get(i);
if (integer == null) {
i++;
continue;
}
if (integer == startNum && startNumIndex == -1) {
startNumIndex = i;
nextNum = startNum + (interval + 1);
i++;
continue;
}
if (integer == nextNum) {
result.add(integer);
nextNum += (interval + 1);
i++;
continue;
}
if (i == startNumIndex) {
//循环一圈了没发现下一个满足的数字了 终止
break;
}
i++;
}
return result;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import org.apache.commons.collections.CollectionUtils;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 37; i++) {
list.add(i);
}
List<Integer> result = gogo(list, 6, 5, 10);
System.out.println(JSON.toJSONString(result));
}
public static List<Integer> gogo(List<Integer> list, int startNum, int interval, int total) {
if (CollectionUtils.isEmpty(list) || total == 0) {
return null;
}
//先排序
List<Integer> sortedList = list.stream().sorted().collect(Collectors.toList());
int size = sortedList.size();
List<Integer> result = new ArrayList<>();
if (sortedList.contains(startNum)) {
result.add(startNum);
} else {
return null;
}
int i = 0;
int startNumIndex = -1; //第一个数字的下标
int nextNum = startNum + (interval + 1);
for (; ; ) {
if (result.size() == total) {
break;
}
if (i == size) {
i = 0;
}
Integer integer = sortedList.get(i);
if (integer == null) {
i++;
continue;
}
if (integer == startNum && startNumIndex == -1) {
startNumIndex = i;
nextNum = startNum + (interval + 1);
i++;
continue;
}
if (integer == nextNum) {
result.add(integer);
nextNum += (interval + 1);
i++;
continue;
}
if (i == startNumIndex) {
//循环一圈了没发现下一个满足的数字了 终止
break;
}
i++;
}
return result;
}
}