一道编程问题:1487 1847 4817 4871 7481 7841 8147 8741 这8个数字中选出三个数字可以成等差数列?

如果可以有3个数成等差数列 打印出来
否则没有打印no

先从小到大排序,然后三重循环
结果:1487 4817 8147
public void test() {
//已排序数列
int[] nums = new int[]{1487, 1847, 4817, 4871, 7481, 7841, 8147, 8741};

List<List<Integer>> results = new ArrayList<>();

for (int i = 0; i < nums.length - 2; i ++) {
for (int j = i + 1; j < nums.length - 1; j ++) {
for (int k = j + 1; k < nums.length; k ++) {
if (nums[k] - nums[j] == nums[j] - nums[i]) { //是等差数列
List<Integer> result = new ArrayList<>();
result.add(nums[i]);
result.add(nums[j]);
result.add(nums[k]);
results.add(result);
System.out.printf("%d %d %d\n", nums[i], nums[j], nums[k]);
break;
} else if (nums[k] - nums[j] > nums[j] - nums[i]) { //第三个数已大于等差数列数,跳出本层循环
break;
}
}
}
}

if (results.size() == 0) { //无适配结果
System.out.println("no");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-29

python暴力解法 不存在


相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网