一些经典题型----数据结构与算法

news/2024/7/7 1:24:08

1.找到链表倒数第k个节点

假设一共链表长度为 x, 倒数第k个节点就是正数第 x-k+1个节点
所以,方法

     在起点设置两个指针a,b
     当 a 走到第 k-1个节点时,b 开始走
     当 a 走完整个链表时,b 所处位置就是倒数第k个节点位置
     a,b速度相同

2.获得子符串的所有字串

             def cut(s):
                 results = []
                 leng = len(s)
                 for i in range(leng):
                     for j in range(leng - i):
                         results.append(s[j:i + j + 1])
                 print(results)


             cut(input())

输入 abc
输出 a,b,c, ab, bc, abc

3.小米笔试

比如,输入

       abcdefgh  7
       输出
       abcdefg
       h000000

算法

        all_str = input()
		b = []
		all = all_str.split(' ')
		str = all[0]
		leng = int(all[-1])
		if len(str) % leng == 0:
			duan = len(str)//leng
		else:
			duan = len(str)//leng+1
		j = 0
		y = leng## 标题
		for i in range(duan):
			t = str[j:y]
			j += leng
			y += leng
		b.append(t)
		fina = len(b[-1])
		for i in range(leng-fina):
			b[-1] += '0'
		for i in b:
			print(i)

4.对称加密和非对称加密

        对称加密:DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法
        非对称加密:RSA算法

5.Python的内存管理机制

       分为对象缓冲池和内存池
       Python中的内存管理机制的层次结构提供了4层,其中最底层则是C运行的malloc和free接口,
       往上的三层才是由Python实现并且维护的。

上面三层分别是 block,arena,pool,usedpool 组成内存池

注意,内存大小以256字节为界限,大于则通过malloc进行分配,小于则通过内存池分配
垃圾回收采用引用计数法

          即创建时计数1,调用、复制加一,引用被销毁减一,为0时回收,释放内存
          del()
          优点:实时性高
          缺点:效率低,可能会导致内存泄露(循环引用)

标记–清除

          效率不高

分代回收

                  原理:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,
               Python默认定义了三代对象集合,垃圾收集的频率随着“代”的存活时间的增大而减小。
               也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。
               那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,
               如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长。

6.osi七层模型作用

         应用层:提供应用程序间的通信
         表示层:数据编码、翻译
         会话层:建立、维护、中止会话
         传输层:建立主机端到端连接
         网络层:逻辑编址、寻址
         数据链路层:介质访问、链路管理
         物理层:介质、接口标准、比特流

附:Web页面请求过程

        url输入---DNS域名解析---建立TCP连接---形成HttpRequest请求
        ---Nginx反向代理---服务端处理请求---关闭TCP连接---返回渲染页面

7.约瑟夫环问题

                nums = 40
				call = 5
				# 参数定义:
				peoples = [True for i in range(nums)]
				result = []
				num = 1

				while (any(peoples)):
					for index, people in enumerate(peoples):
    					if people:
        					if num == call:
            					peoples[index] = False
            					result.append(index + 1)
            					num = 1
        					else:
            					num += 1

				print('\n总数为%d,报数为%d' % (nums, call))
				print('约瑟夫序列为:\n%s\n' % result)

8.获取字符串中的数字

                d = []
				a = input()
				for i in a:
					try:
    					if int(i):
        					d.append(i)
					except:
    					d.append('')
				d = ''.join(d)
				print(d)

http://www.niftyadmin.cn/n/1710834.html

相关文章

默认是什么_男左女右是什么意思 为什么我们会默认男左女右?

在我们的生活中,对于男女的位置似乎有一个大家都默认的规矩,那就是男左女右。这个默认的约定存在于生活的方方面面,比如,一般的公厕就是男左女右;男女照一些正式的合照,比如结婚照,就是男左女右;还有一些情…

在Visual Basic 6.0中MSFlexGrid控件与DataGrid控件有什么不同?

都是数据绑定控件,但是也有一定的区别,适合不同的应用场合: MSFlexGrid 控件: Microsoft FlexGrid (MSFlexGrid) 控件可以显示网格数据,也可以对其进行操作。它提供了高度灵活的网格排序、合并和格式设置功能,网格中可…

python 数据类型要点

1.dict 对于字典来说 它的底层是由 hash表实现的 大数据写成字典模式再遍历,会减小复杂度,优化算法 因为 字典遍历复杂度为O(1),列表为O(n)另 字典要求其 key值必须是不可变数据类型,如元组,整形,字符串型列表就不行再…

分布式运用——rsync远程同步

分布式运用——rsync远程同步 一、rsync的背景和原理1.rsync的功能2.rsync的应用场景3.使用rsync的基本命令4.scp与rsync的区别 二、配置rsync源服务器1.关闭防火墙2.建立/etc/rsyncd.conf 配置文件3.保证所有用户对源目录/var/www/html 都有读取权限4.启动 rsync 服务程序5.关…

在电脑上怎么做判断题打√或x_2018电脑知识期末考试

出题人:莫大神白注:闭卷考试请自觉作答,请勿在评论区留下答案一、填空题(1分1空共52分)1.当今机械硬盘写入方式分两种分别是______和______2.叠瓦硬盘的特征是______,缺点是______、______3.硬盘分为三种分别是,______、______和_…

android html转word保留样式_【转】WORD批量去除文本框保留文本

文本框一般以浮动的形式(即文字环绕方式为四周环绕、紧密环绕、衬于文字上方等)存在于文档中,选中文本框时可以看到在它的左侧有一个锚定标记,锚标总是在某一个段落的开头位置,表示浮动的文本框锁定于该段落&#xff0…

NtQueryObject 获得内核对象的信息

导读 玩过电脑的都知道,Widnows任务管理器,我们经常用它查看机器的CPU内存等信息,也用它杀死一些卡主的进程。 而作为开发人员,我们为了更了解进行的运行状况,就不得不说另外两个工具: procexp.exe&…

启动rocketmq_windows 验证RocketMq 是否安装成功

安装过程参考:windows 安装rocketMQ1. 启动nameServerbin目录 cmd 执行:.mqnamesrv ,显示 name server boot success 启动成功!启动broker执行:.mqbroker -n localhost:9876,显示The broker[LAPTOP-MDOLDHDA, 192.168.…