微软,Google面试题 (26) —— 和为n连续正数序列
2010-08-25 15:13
363 查看
题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
解法一:开辟一个大小为n/2 + 1(n为奇数,n为偶数则大小为n/2 - 1)的数组,值从1到n。两个指针p1指向1,p2指向p1的下一个。然后循环,如果p1和p2之间的元素和小于n,p2++;大于n,p1++;等于n,则输出之后p1,p2同时后移。直到p2走完数组,循环结束。这种方法时间复杂度为O(n),空间复杂度为O(n)。
解法二:常规解法,复杂度为O(n^2)。
解法一:开辟一个大小为n/2 + 1(n为奇数,n为偶数则大小为n/2 - 1)的数组,值从1到n。两个指针p1指向1,p2指向p1的下一个。然后循环,如果p1和p2之间的元素和小于n,p2++;大于n,p1++;等于n,则输出之后p1,p2同时后移。直到p2走完数组,循环结束。这种方法时间复杂度为O(n),空间复杂度为O(n)。
解法二:常规解法,复杂度为O(n^2)。
相关文章推荐
- 程序员面试题精选100题(26)-和为n连续正数序列
- 程序员面试题精选100题(26)-和为n连续正数序列
- 面试题41-2:和为s的连续正数序列
- 网易面试题 输入一个正数n,输出所有和为n连续正数序列
- 《剑指Offer》学习笔记--面试题41:和为s的两个数字VS和为s的连续正数序列
- 剑指offer——面试题:42(二)s的连续正数序列
- 面试题41和为S的两个数字VS和为s的连续正数序列
- 面试题40:输出和为指定值的连续正数序列
- 面试题41:和为s的两个数字VS和为s的连续正数序列
- 程序员面试题精选(26):和为n连续正数序列
- 剑指Offer----面试题41(2):和为s的连续正数序列
- 面试题41:和为s的两个数字VS和为s的连续正数序列
- 剑指Offer-面试题41-和为s 的两个数字vs 和为s 的连续正数序列
- 微软,Google面试题 (24) —— 栈的push、pop序列
- 剑指offer面试题41_2 和为s的连续正数序列(java实现)
- 程序员面试题精选100题(26)-和为n连续正数序列
- 微软100题第51题:和为n连续正数序列
- 面试题41:和为s的两个数字VS和为s的连续正数序列
- 40. 网易面试题:和为n连续正数序列(数组)
- 面试题41:和为s的两个数字 VS 和为s的连续正数序列