题目要求
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?