• 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]))
  • 相关阅读:
    Node.js入门学习笔记
    Memcached服务器安装、配置、使用详解
    基于Dubbo框架构建分布式服务
    Apache Beam:一个开源的统一的分布式数据处理编程库
    Spring Cloud Netflix构建微服务入门实践
    内部排序算法:快速排序
    内部排序算法:冒泡排序
    内部排序算法:基数排序
    Java常见面试题
    svn+ssh方式svn服务器和客户端的配置[转载]
  • 原文地址:https://www.cnblogs.com/connie313/p/12149959.html
Copyright © 2020-2023  润新知