面试题41:和为s的两个数VS和为s的连续正数数列

2024-09-06 00:58

本文主要是介绍面试题41:和为s的两个数VS和为s的连续正数数列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题说明:

1.和为s的两个数问题是从一个排序的数组中找出和为s的两个数;

2.原题是找出一个即可,现在全部找出;

3.和为s的连续正数数列是给定一个数找出所有连续正数数列的和为s,例如s为9,(2,3,4)就是其中一组。

(一)和为s的两个数问题

public static int findNumbersWithSum(int[] sorted, int fromIndex, int toIndex, int sum){if(null == sorted || sorted.length == 0){throw new IllegalArgumentException();}// allow one element in sorted but at least two elment to make a pairif(fromIndex > toIndex){throw new IndexOutOfBoundsException("fromIndex : " + fromIndex + "toIndex : " + toIndex);}int countPair = 0;// return value int smallIndex = fromIndex;int bigIndex = toIndex;int currentSum = 0;while(smallIndex < bigIndex){currentSum = sorted[smallIndex] + sorted[bigIndex];if(currentSum > sum){bigIndex--;}if(currentSum < sum){smallIndex++;}if(currentSum == sum){int firstNotEqualSmall = smallIndex + 1;while(firstNotEqualSmall < bigIndex && (sorted[firstNotEqualSmall] == sorted[smallIndex])){firstNotEqualSmall++;}int firstNotEqualBig = bigIndex - 1;while(firstNotEqualBig > smallIndex && (sorted[firstNotEqualBig] == sorted[bigIndex])){firstNotEqualBig--;}//int equalSmallLen = firstNotEqualSmall - smallIndex;//int equalBigLen = bigIndex - firstNotEqualBig;// may be i == j so add condition by i < jfor(int i = smallIndex; i < firstNotEqualSmall; i++){for(int j = bigIndex; (i < j) && (j > firstNotEqualBig); j--){countPair++;System.out.println("equal sum = " + sum + " pair index is (" + i + "," + j + ")" + " and value is (" + sorted[i] + "," + sorted[j] + ")");}}// go on to find againsmallIndex = firstNotEqualSmall;bigIndex = firstNotEqualBig;}// end if ==}//end whilereturn countPair;
}
(二)和为s的连续正数数列

public static void findContinousSequence(int sum){if(sum < 3){return ;}int small = 1;int big = 2;int currentSum = 3;int middle = (1 + sum) >> 1;while(small < middle){if(currentSum == sum){print(small, big);}while(currentSum > sum && small < middle){currentSum -= small;small++;if(currentSum == sum){print(small, big);}}// maybe currentSum < sum or small >= middlebig++;currentSum += big;}
}

这篇关于面试题41:和为s的两个数VS和为s的连续正数数列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140543

相关文章

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`