zoukankan      html  css  js  c++  java
  • lintcode

    1. stack push and pop

    输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。

    比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,这样得到的pop序列就是4、5、3、2、1。但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列


    import math
    def isLegalSeq(push, pop):
    # write your code here
    pushreal= []
    start =0
    while start<len(push) and len(pop)!=0:
    if pop[0] not in pushreal:
    tag =0
    while start<len(push) and push[start]!=pop[0]:
    tag = 1
    pushreal.append(push[start])
    start=start+1

    if push[start]==pop[0]:
    start=start+1
    pop.pop(0)
    else:
    if pushreal[-1]==pop[0]:
    pop.pop(0)
    pushreal.pop()
    else:
    return False
    start = 0
    if len(pop)!=0 and len(pop)==len(pushreal):
    while len(pushreal)!=0 and len(pop)!=0 and start<len(pop):
    if pushreal[start] != pop[-1*start-1]:
    return False
    start = start+1
    return True
    else:
    if len(pop)==0 and len(pushreal)==0:
    return True
    return False
    2. rearch target
    题目描述:我简单将题目用汉语描述一下。说初始位置在0,给定一个目标值target(target是一个整数),现在让你每次走一步,每次走的步长和已经走的步数相等(第一次走1,第二次走2,。。。),每次可以向左或者向右走(也就是加正数或者负数),问最少走多少次可以走到target.

    def munss(target):
    m = math.floor((math.sqrt(1+8*target)-1)/2)
    targ = m/2+m*m/2
    return math.floor(2*(target - targ)+m)
    outer = 0

    3. rearch in a map

    def rearch(map):
    start = [0,0]
    num = 0
    rearchfrom(start,map, num)
    print(outer)
    def rearchfrom(start,map, num):
    if map[start[0]][start[1]] == 9:
    outer = outer + 1
    return
    if start[0]+1<len(map) and map[start[0]+1][start[1]]==0 and map[start[0]][start[1]+1]==0 and start[1]+1<len(map[0]):
    return
    else:
    if start[0]+1<len(map) and map[start[0]+1][start[1]]==1:
    start = [start[0]+1, start[1]]
    rearchfrom(start,map, num)
    if start[1]+1<len(map[0]) and map[start[0]][start[1]]==1:
    start = [start[0], start[1]+1]
    rearchfrom(start,map, num)
    # print(munss(2))
    print(rearch([
    [1,1,1],
    [1,1,1],
    [1,1,9]
    ]))
    # print(isLegalSeq([1,2,4,3],[2,3,4,1]))
  • 相关阅读:
    python每日活力练习Day29
    python活力练习Day28
    python活力练习Day27
    pyhton 活力练习Day26
    排序算法之归并排序
    排序算法之快速排序
    Python 多线程
    排序算法之希尔排序
    排序算法之插入排序
    ELK(elasticsearch+kibana+logstash)搜索引擎(一): 环境搭建
  • 原文地址:https://www.cnblogs.com/connie313/p/12149959.html
Copyright © 2011-2022 走看看