算法构成 时间复杂度

总结:

1、

一个算法由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。

2、

N*N矩阵乘法算法

时间复杂度T(n)=O(n^3)

 

for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
    c[i][j]=0
    for(k=1;k<=n;k++)
      c[i][j]+=a[i][k]*b[k][j]

 

O(f(n))形式定义:

若f(n)是正整数n的一个函数,则O(f(n))表示

存在一个正常数M,使得当n>=n0时都满足O(f(n)<=M*f(n)

 

3、

常量阶 线性阶 平方阶 O(1) O(n) O(n^2)

对数阶指数阶 O(logN) O(2^n)

 

 

 

 

时间复杂度计算

 

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum 

 

 

class Solution:
    def twoSum(self, nums, target):
        c = len(nums)
        for i in range(0, c, 1):
            if target - nums[i] in nums[i + 1:]:
                return [i, i + 1 + nums[i + 1:].index(target - nums[i])]



class Solution:
def twoSum(self, nums, target):
hashmap = {}
for index, num in enumerate(nums):
another_num = target - num
if another_num in hashmap:
return [index, hashmap[another_num]]
hashmap[num] = index
return None


O(n^2)

O(n)

 

posted @ 2016-12-29 19:54  papering  阅读(364)  评论(0编辑  收藏  举报