如何按相邻元素差值≥7的规则拆分整数列表为子列表?
整数列表按相邻差值拆分的需求与实现
输入列表
List<Integer> integerList = [1,2,4,11,14,15,16,16,19,30,31,50,51,100,101,105];
期望输出
拆分后得到的子列表集合:
List<List<Integer>> sub = [[1,2,4],[11,14,15,16,16,19],[30,31],[50,51],[100,101,105]];
拆分规则
遍历列表时,若当前元素与前一个元素的差值≥7,就将此处作为拆分点,把前后元素划分到不同的子列表中。本次拆分的几个关键差值分别为7(4→11)、11(19→30)、19(31→50)、49(51→100),全部符合≥7的拆分条件。
实现示例(Java)
import java.util.ArrayList; import java.util.List; public class ListSplitter { public static void main(String[] args) { List<Integer> integerList = List.of(1,2,4,11,14,15,16,16,19,30,31,50,51,100,101,105); List<List<Integer>> splitResult = new ArrayList<>(); // 处理空列表的边界情况 if (integerList.isEmpty()) { System.out.println(splitResult); return; } List<Integer> currentGroup = new ArrayList<>(); currentGroup.add(integerList.get(0)); for (int i = 1; i < integerList.size(); i++) { int prevNum = integerList.get(i-1); int currNum = integerList.get(i); // 满足差值条件则拆分 if (currNum - prevNum >= 7) { splitResult.add(currentGroup); currentGroup = new ArrayList<>(); } currentGroup.add(currNum); } // 添加最后一组元素 splitResult.add(currentGroup); System.out.println(splitResult); } }
内容的提问来源于stack exchange,提问作者Muhammed Sibil
相关产品推荐
相关产品推荐

