输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)
package leetcode;
import edu.princeton.cs.algs4.Cycle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
public class FirstDay {
public static void main(String[] args) {
int[][] i = findContinuousSequence(15);
Arrays.stream(i).forEach(new Consumer<int[]>() {
@Override
public void accept(int[] ints) {
Arrays.stream(ints).forEach(i->System.out.println(i));
System.out.println("______________");
}
});
}
/**
* 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
* 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
*/
public static int[][] findContinuousSequence(int target) {
List<int[]> result = new ArrayList<>();
if (target == 0 || target == 1 || target == 2) {
return new int[0][0];
}
CycleQueun cq = new CycleQueun();
int mid =target/2+1;
for (int i = mid; i >0 ; i--) {
int m = cq.addQ(i);
if(m == target){
int[] resu= cq.getQ();
result.add(resu);
}
if(m>target){
int sum = cq.removeQ();
if(m == target){
int[] resu= cq.getQ();
result.add(resu);
}
}
}
int[][] results = new int[result.size()][];
for (int i = 0; i <result.size() ; i++) {
results[i]=result.get(i);
}
return revse(results);
}
public static int[][] revse(int[][] objs){
for (int i = 0 ,j = objs.length-1; i<j; i++,j--) {
int[] Oi = objs[i];
int[] Oj = objs[j];
objs[i] = Oj;
objs[j] = Oi;
}
return objs;
}
static class CycleQueun{
private int sum;
private List<Integer> q = new LinkedList<>();
public int addQ(int a){
sum += a;
q.add(a);
return sum;
}
public int removeQ(){
int i = q.get(0);
sum -= i;
q.remove(0);
return sum;
}
public int[] getQ(){
int[] result = new int[q.size()];
for (int i = 0; i <q.size() ; i++) {
result[i]=q.get(i);
}
for (int i = 0 ,j = result.length-1; i<j; i++,j--) {
int Oi = result[i];
int Oj = result[j];
result[i] = Oj;
result[j] = Oi;
}
return result;
}
}
}
//优化版本
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)的更多相关文章
- 算法:输入一个链表,输出该链表中倒数第k个结点。
算法:输入一个链表,输出该链表中倒数第k个结点.<剑指offer> 思路加到注释里面了: 1:两个if判断是否返回值为空,首个为空,没有第k个值: 2:for循环找到倒数第k个值,返回为a ...
- 编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url
编写一个C语言函数,要求输入一个url,输出该url是首页.目录页或者其他url 首页.目录页或者其他url 如下形式叫做首页: militia.info/ www.apcnc.com.cn/ htt ...
- 【剑指offer】输入一个链表,输出该链表中倒数第k个结点。
一.题目: 输入一个链表,输出该链表中倒数第k个结点. 二.思路: 用两个指针p1和p2,p2先跑k步,然后p1和p2同时跑,p2跑到头p1所在的位置就是倒数第k个节点.很简单吧?简单你也想不到,想到 ...
- 剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
1. 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 2. 思路和方法 使用移位(<<)和 “| & !”操作来实现.1的二进制是:前面都是0,最后一位 ...
- 剑指offer14:输入一个链表,输出该链表中倒数第k个结点。
1. 题目描述 输入一个链表,输出该链表中倒数第k个结点. 2. 思路和方法 可以用两个指针,一个指针遍历到第k个结点的时候,第二个指针再走到第一个节点,然后两个指针的距离始终保持k-1.这样,当第一 ...
- 剑指Offer-14:输入一个链表,输出该链表中倒数第k个结点。
题目描述: 输入一个链表,输出该链表中倒数第k个结点.例如有一个链表有六个节点1,2,3,4,5,6.则它的倒数第二个节点为5 节点定义如下: public class ListNode { int ...
- Java基础周测题,输入一个整数,输出所有能整除该整数的结果:
需求说明: 输入一个整数,输出所有能整除该整数的结果: 实现代码: package demo; import java.util.Scanner; public class test1 { publi ...
- [java]输入一个算术表达式输出结果
动手有益. 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形.例如: 输入:3+8×2/9-2 输出:2 /** * input a calculate stri ...
- python输入一个字符串,输出翻转后的字符串(翻转字符串)
题目:输出一个字符串,输出翻转后的字符串.例如:输入字符串a123,输出321a. 方法一:使用列表的reverse方法 string=input('请输入一个字符串:') lst=list(stri ...
随机推荐
- 06_Intent和IntentFilter
Intent是同一个或不同的应用中的组件之间的消息传递的媒介,是一个将要执行动作的抽象描述,一般来说是作为参数来使用. Intent描述要启动的基本组件: IntentFilter对组件进行过滤. 下 ...
- 「刷题笔记」LCA问题相关
板子 ll lg[40]; ll dep[N],fa[N][40]; ll dis[N]; void dfs(ll u,ll f) { dep[u]=dep[f]+1; fa[u][0]=f; for ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你
[五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...
- Netty 心跳处理
传统的心跳包设计,基本上是服务端和客户端同时维护 Scheduler,然后双方互相接收心跳包信息,然后重置双方的上下线状态表.此种心跳方式的设计,可以选择在主线程上进行,也可以选择在心跳线程中进行,由 ...
- 第三十三章、PyQt+moviepy实现的MP4视频转gif工具
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 在写<第三十二章.使用splitDockWidget和 ...
- PyQt(Python+Qt)学习随笔:QTreeWidgetItem项子项展开相关方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项如果一个项有子项,可以调用setE ...
- PyQt学习随笔:Model/View设计中支持View中展示数据的排序
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在model/view架构中,有两种方法可以实现排序,选择哪种方法依赖于底层Model.如果mode ...
- PyQt Designer中连接信号和槽时为什么只能连接控件自己的信号和槽函数?
老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...
- 分布式文件系统HDFS-部署和配置
1 部署HDFS HDFS的基本操作可以分为集群管理和文件系统操作两种类型: 集群管理:包括Namenodede 的格式化.集群的启动和停止.集群信息查看等. 文件系统:包括对目录.文件和权限等内容的 ...
- Github 美化设置个人主页
起因是发现自己follow的大师傅个人主页跟普通的不太一样: 猜测应该是Github啥时候出现的新功能,查了一下,发现可以通过创建同名仓库来实现个人主页的美化设置 首先在 GitHub 上建立一个与自 ...