算法面试题整理(代码片段)

guohad guohad     2022-12-03     378

关键词:

 1、python反转字符串

‘‘‘第一种:使用字符串切片‘‘‘
s = ‘Hello World‘
print(s[::-1])  # dlroW olleH

‘‘‘第二种:使用列表的reverse方法‘‘‘
l = list(s)
l.reverse()
print( "".join(l) )   # dlroW olleH

‘‘‘第三种:使用reduce‘‘‘
from functools import reduce
result = reduce(lambda x,y:y+x,s)
print( result )      # dlroW olleH

2. 用两个栈实现一个队列

    注:栈后进先出,列表先进先出, 使用两个栈模拟列队列未被插入元素和删除队列头

  1、实现方法

    1)使用stack1模拟队列尾部追加元素

        1. 只要追加元素直接加入stack1这个栈即可

    2)使用stack2模拟删除队首元素

        1. 当第一次删除时,stack2肯定为空,那么将stack1中元素依次出栈,加入stack2中

        2. 那么stack2中栈顶元素即是stack1中以前的栈底元素(队列头),stack1为空

        3. 当第二次删除时首先会判断stack2是否为空,如果不为空,直接删除stack2的栈顶元素即为队列头部元素

        4. 如果stack2为空,再次将stack1中元素依次加入stack2中

技术图片class CQueue:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def append_tail(self, elem):
        self.stack1.append(elem)

    def delete_head(self):
        if not self.stack2:  # 如果stack2为空就将stack1中的元素依次如stack2的栈,stack2就可以模拟这个列表了
            if self.stack1:
                while self.stack1:
                    elem = self.stack1.pop()
                    self.stack2.append(elem)
            else:
                raise Exception("Queue is empty.")
        elem = self.stack2.pop()  # 只要stack2不为空,stack2栈顶元素即是队首元素
        return elem


if __name__ == ‘__main__‘:
    que = CQueue()
    que.append_tail(1)
    que.append_tail(2)
    que.append_tail(3)
    print que.delete_head()  # 1
    que.append_tail(4)
技术图片
‘‘‘模拟 1 2 3 加入对了,然后3出对了,然后4加入队列过程‘‘‘
# 第一步:1 2 3 加入队列
‘‘‘
stack1 = [1,2,3]
‘‘‘

# 第二步:删除队列头部元素
‘‘‘
1) 将stack1中元素依次出栈放入stack2中
stack1 = []
stack2 = [3,2,1]
删除队列首部元素即删除stack2栈顶元素: stack2 = [3,2]
‘‘‘

# 第三步:将4加入队列
‘‘‘
stack1 = [4]
stack2 = [3,2]
# 如果再次删除队列头部,就直接删除stack2栈顶元素,直到stack2为空,再次将stack1中元素出栈放入stack2即可
‘‘‘

 

3.使用yield生成器生成斐波拉契函数

def fib(max_num):
    a,b = 1,1
    while a < max_num:
        yield b
        a,b=b,a+b

g = fib(10)               #生成一个生成器:[1,2, 3, 5, 8, 13]
print(g.__next__())       #第一次调用返回:1
print(list(g))            #把剩下元素变成列表:[2, 3, 5, 8, 13]

 

技术图片
‘‘‘模拟 1 2 3 加入对了,然后3出对了,然后4加入队列过程‘‘‘
# 第一步:1 2 3 加入队列
‘‘‘
stack1 = [1,2,3]
‘‘‘

# 第二步:删除队列头部元素
‘‘‘
1) 将stack1中元素依次出栈放入stack2中
stack1 = []
stack2 = [3,2,1]
删除队列首部元素即删除stack2栈顶元素: stack2 = [3,2]
‘‘‘

# 第三步:将4加入队列
‘‘‘
stack1 = [4]
stack2 = [3,2]
# 如果再次删除队列头部,就直接删除stack2栈顶元素,直到stack2为空,再次将stack1中元素出栈放入stack2即可
‘‘‘

promise面试题整理(代码片段)

基础输出题题目1constpromise=newPromise((resolve,reject)=>console.log(1)resolve()console.log(2))promise.then(()=>console.log(3))console.log(4)记住newPromise里的参数函数,是同步被执行的,故而先输出1,2.resolve后还需要等待进入下一个事件 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶(已完成)Pyt... 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶(已完成)Pyt... 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶(已完成)Pyt... 查看详情

最强面试题整理第一弹:python基础面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶Python后台开发爬虫机... 查看详情

最强面试题整理第一弹:python基础面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶Python后台开发爬虫机... 查看详情

最强面试题整理第一弹:python基础面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶Python后台开发爬虫机... 查看详情

文巾解题面试题17.10.主要元素(代码片段)

...杂度和O(1)的空间复杂度,所以想到的是Boyer-Moore投票算法。这个算法的原理可见:算法整理:Boyer-Moore投票算法_刘文巾的博客-CSDN博客classSolution(object):defmajorityElement(self,nums):""":typenums:L 查看详情

最强面试题整理第三弹:python后台开发面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶(已完成)Pyt... 查看详情

最强面试题整理第三弹:python后台开发面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶(已完成)Pyt... 查看详情

.net面试题整理(代码片段)

.Net面试题整理(一)好久的资料了,拿出来分享给大家,主要是记录一些面试题整理。Main函数是什么?在程序中使用Main函数有什么需要注意的地方?Q:程序的入口函数!函数名字不能改变;一个程序中... 查看详情

.net面试题整理(代码片段)

.Net面试题整理(一)好久的资料了,拿出来分享给大家,主要是记录一些面试题整理。Main函数是什么?在程序中使用Main函数有什么需要注意的地方?Q:程序的入口函数!函数名字不能改变;一个程序中... 查看详情

.net面试题整理(代码片段)

.Net面试题整理(一)好久的资料了,拿出来分享给大家,主要是记录一些面试题整理。Main函数是什么?在程序中使用Main函数有什么需要注意的地方?Q:程序的入口函数!函数名字不能改变;一个程序中... 查看详情

.net面试题整理(代码片段)

.Net面试题整理(一)好久的资料了,拿出来分享给大家,主要是记录一些面试题整理。Main函数是什么?在程序中使用Main函数有什么需要注意的地方?Q:程序的入口函数!函数名字不能改变;一个程序中... 查看详情

golang笔记-面试题整理01(代码片段)

前两天有个朋友去面试,把他给问自闭了。。。拿到他的面试题后,花了一些时间,整理了以下golang面试题,都是比较基础的问题,留给大家作为面试参考。文章目录1、在进行项目开发时,遇到的关于golan... 查看详情

web前端面试题整理(代码片段)

---恢复内容开始---1.浏览器的内核分别是什么?  IE:trident内核  Firefox:gecko内核  Safari:webkit内核  Opera:以前是presto内核,Opera现已改用GoogleChrome的Blink内核  Chrome:Blink(基于webkit,Google与OperaSoftware共同开发)2.一次完... 查看详情

2022年java面试题最新整理,附白话答案(代码片段)

2022年Java开发面试题最新整理,附白话答案写在前面:本篇面试题整理是我在北京地区进行面试整理得出,常见的基本都在下面了。基本都是可以直接在面试时用白话回答的答案总结,面试时照此回答即可,有... 查看详情

面试题整理(代码片段)

1、mysql如何实现主从?使用binlog主从复制。从库生成两个线程,一个I/O线程和一个sql线程。I/O线程区请求主库的binlog,并将得到的binlog写入到relaylog(中继日志)文件中;主库会生成一个logdump线程,来给从库I/O线程传binlog;sql线... 查看详情