题目要求
P1147题目链接
Java没有指针的概念,但我们也不是用的C的指针。这里的指针是指两个数值,代表区间的两个索引,利用双指针的移动表示区间的收缩或者扩张,借此找到所求的解。 我们定义两个int变量 i 和 j 来代表一个区间左右边界的索引 tempSum是指当前区间内所有数值的和。 当tempSum小于目标值M时,将右端点右移(j++),然后改变tempSum的值,即tempSum会变大; 当tempSum大于目标值M时,将左端点右移(i++),然后改变tempSum的值,即tempSum会变小。 在双指针移动的过程中,如果有tempSum==M的情况就将其添加到List里面,等最后输出。 因为两个指针整体是向右移动,也只扫一遍,效率比较高。 左端点大于m/2时就停止,因为只要长度为2的连续序列和就一定大于m,肯定不符合要求,不必浪费时间。 具体的设计还是需要仔细看的:
AC代码(Java语言描述)import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
scanner.close();
int tempSum = 3;
List list = new LinkedList();
for(int i = 1, j = 2; i
关注
打赏
热门博文
- 【Linux】Ubuntu20.04安装和卸载MySQL8
- 【Linux】Ubuntu 20.04 报错 curl: (23) Failure writing output to destination 的解决方法
- 【Java】JUnit 4.13.2 警告 ‘assertEquals(double, double)‘ is deprecated 的解决方法
- 【JavaScript】处理 @parcel/transformer-js: Browser scripts cannot have imports or exports.
- 【Node.js】Windows环境安装配置NVM和Node.js
- 【Python】处理TypeError: Plain typing.NoReturn is not valid as type argument
- 【Python】Matplotlib可视化50例
- 【C语言】C语言修改MySQL数据库
- 【Java】从默认包导入类和对象报错的解决方法
- 【Java】panel.getGraphics()报错空指针异常的解决方法