zoukankan      html  css  js  c++  java
  • 剑指Offer 57 和为s的数字

    和为S的两个数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     def FindNumbersWithSum(self, array, tsum):
     4         n = len(array)
     5         i,j = 0,n-1
     6         while i<j:
     7             cur = array[i] + array[j]
     8             if cur == tsum:
     9                 return [array[i],array[j]]
    10             if cur < tsum:
    11                 i += 1
    12             else:
    13                 j -= 1
    14         return []
    15         # write code here

    和为S的连续正数序列

    小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     def FindContinuousSequence(self, tsum):
     4         start,end,cursum = 1,2,3
     5         result = []
     6         while end < tsum:
     7             if cursum > tsum:
     8                 cursum -= start
     9                 start += 1
    10             elif cursum < tsum:
    11                 end += 1
    12                 cursum += end
    13             else:
    14                 l = []
    15                 for i in range(start,end+1):
    16                     l.append(i)
    17                 result.append(l)
    18                 cursum -= start
    19                 start += 1
    20                 end += 1
    21                 cursum += end
    22         return result
    23         # write code here
  • 相关阅读:
    网站运维之 优化
    网站运维之 风险防控
    网站运维之 使用IIS日志分析器1.03.exe进行IIS服务器日志分析
    MySQL数据库优化
    深入理解Java GC
    深入理解React虚拟DOM
    深入理解new String()
    深入理解JVM内存模型
    MySQL的四种事务隔离级别
    Node.js Stream(流)
  • 原文地址:https://www.cnblogs.com/asenyang/p/11024609.html
Copyright © 2011-2022 走看看