小程序几道

原创 2012年03月31日 16:13:40


将字符串中空格长度大于1的空格变成一个空格, 时间复杂度O(N), 空间复杂度o(N)


def test1():
    sr = 'abcd abcde   abcd dd            abcd 123'
    sl = list(sr)
    
    st = False
    i=j=0
    for x in sr:
        if x != ' ':
            st = False
            sl[i] = sl[j] 
            i += 1
            j += 1
        elif st == False:
            st = True
            sl[i] = sl[j] 
            i += 1
            j += 1
        else:
            j += 1
    
    print sr
    print ''.join(sl[:i])

matplotlib代码一例

#coding: utf8
import matplotlib.pyplot as plt
from datetime import datetime

###result.txt format
#2012-04-01_13:29:01 0.00, 0.01, 0.05 739928 1316020 64.01 129900 777072 832856 20.78 585612 574972 12 10682 17 ESTABLISHED 12 LISTEN 10703 TIME_WAIT
#2012-04-01_13:30:01 0.00, 0.01, 0.05 738440 1317508 64.08 129980 778240 832856 20.78 585912 575912 2 10622 25 ESTABLISHED 12 LISTEN 10631 TIME_WAIT
#2012-04-01_13:31:01 0.00, 0.01, 0.05 737820 1318128 64.11 130060 779016 832856 20.78 586056 576648 2 9295 2 ESTABLISHED 12 LISTEN 9292 TIME_WAIT
#2012-04-01_13:32:01 0.00, 0.01, 0.05 739192 1316756 64.05 130076 779016 832856 20.78 586056 576664 1 3532 2 ESTABLISHED 12 LISTEN 3528 TIME_WAIT
#2012-04-01_13:33:01 0.05, 0.03, 0.05 727396 1328552 64.62 130116 780128 881624 22.00 597060 577712 1 5 3 ESTABLISHED 12 LISTEN
###

time_lst = []
avg1_lst = []
avg5_lst = []
avg15_lst = []
memper_lst = []
commit_lst = []
netlink_lst = []

establish_lst = []
listen_lst = []
timewait_lst = []

def getlink(lst):
    if len(lst) <= 2:
        return int(lst[0]), 0, 0
    if len(lst) <= 4:
        return int(lst[0]), int(lst[2]), 0
    if len(lst) >= 6:
        return int(lst[0]), int(lst[2]), int(lst[4])

with open('result.txt', 'r') as fp:
    for line in fp:
        data = line.split(' ')
        ti, avg1, avg5, avg15, memfree, memused, memper, kbb, kbca, kbc, commit, ka, kina, netlink, dblink = data[:15]
        time_lst.append(datetime.strptime(ti, '%Y-%m-%d_%H:%M:%S'))
        avg1_lst.append(float(avg1[:-1])*100)
        avg5_lst.append(float(avg5[:-1])*100)
        avg15_lst.append(float(avg15)*100)

        memper_lst.append(float(memper))
        commit_lst.append(float(commit))

        netlink_lst.append(int(netlink))
        est, listen, tw = getlink(data[15:])
        establish_lst.append(est)
        listen_lst.append(listen)
        timewait_lst.append(tw)

plt.figure(1)

plt.subplot(211)
plt.title("System Load Average Figure")
plt.xlabel("Time Line")
plt.ylabel("System Load Average")
#plt.text(2, 6, r'red: 1 minute, blue: 5 minute, green: 15 minute', fontsize=15, style='italic',bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
plt.plot(time_lst, avg1_lst, 'r-',  time_lst, avg5_lst, 'b-', time_lst, avg15_lst, 'g-')

plt.subplot(212)
plt.title("Memory Figure")
plt.xlabel("Time Line")
plt.ylabel("Memory Used Percentage")
plt.plot(time_lst, memper_lst, 'r-', time_lst, commit_lst, 'b-')

plt.figure(2)
plt.title("NetWork Figure")
plt.xlabel("Time Line")
plt.ylabel("Link Number")
plt.plot(time_lst, netlink_lst, 'r-', time_lst, establish_lst, 'b-', time_lst, listen_lst, 'g-', time_lst, timewait_lst, 'y-')

plt.show()

原题大概是:
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];
要求:
1.不准用除法运算
2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)
3.满足时间复杂度O(n),空间复杂度O(1)

a = [2,5,6,3,1,9]
print a

b = map(lambda x: reduce( lambda i,j: i*j, a[:a.index(x)], 1) * reduce( lambda i,j : i*j, a[a.index(x)+1:], 1),  a)
print b

c = [1]
for i in range(len(a)):
    if i == 0:
        continue
    c.append( a[i-1]*c[i-1])

for i in range(len(c)):
    c[i] = c[i] * reduce(lambda i,j: i*j , a[i+1:], 1)

print c

d = [0 for x in a]
d[0] = 1
for i in range(1, len(a)):
    d[0] *= a[i-1]
    d[i] = d[0]



d[0] = 1
for i in range(len(a)-2, 0, -1):
    d[0] *= a[i+1]
    d[i] *= d[0]
d[0] *= a[1]
print d

给出数n, 求0到n之间数字1出现的次数, 如f(13) = 6, f(10) = 2

import math

def length11(n):
    return int( math.log10(n) )

def first(n):
    return n/pow(10, length11(n))
def tail(n):
    return n % pow(10, length11(n))

def f9(k):
    if k == 0:
        return 0
    return pow(10, k-1) + 10*f9(k-1)

def f1(n):
    if first(n) == 1:
        return tail(n) + 1
    else:
        return pow(10, length11(n))

def cal(n):
    if n== 0:
        return 0
    if n <= 9:
        return 1
    return f1(n) + first(n) * f9(length11(n))+ cal(tail(n))


print cal(213)
print cal(10)


oracle的几道程序题

公司为期了两周的oracle培训,今天进行了一次测试,现将其中三道程序题供大家分享,共同学习讨论。 1、设计一个函数,给出对象号,返回对象名 create or replace function ...

第六届福建省大学生程序设计竞赛(几道水题)

FZU2212:http://acm.fzu.edu.cn/problem.php?pid=2212 水题 #include #include #include #includ...

几道经典C语言面试题

  • 2010年08月18日 11:38
  • 46KB
  • 下载

几道经典java面试题

  • 2008年12月11日 19:00
  • 415B
  • 下载

几道经典的SQL笔试题目(有答案)

几道经典的SQL笔试题目(有答案)   (1)表名:购物信息 购物人      商品名称     数量 A            甲          2 B            乙   ...

几道ICPC题目及其代码(C++)

  • 2009年06月24日 17:34
  • 85KB
  • 下载

几道经典C语言面试题(华为)

  • 2011年11月12日 15:12
  • 28KB
  • 下载

关于队列和栈的几道面试题

关于队列和栈的几道面试题今天来说几道简单的栈和队列相关的几道面试题:1 . 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O (1 )第一道题,我们...

几道重要的C++题

  • 2015年12月18日 21:31
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:小程序几道
举报原因:
原因补充:

(最多只允许输入30个字)