随笔分类 - 编程&算法
摘要:题目:判断是否符合ipv4格式,符合返回True,否则返回False 解题思路: 首先,需要了解ipv4的基本格式。 ip地址的长度是32位,且分为4段,每段的范围是0-255 每段的数字范围又分为以下5种: 1位 \d 0-9 2位 [1-9]\d 10-99 3位 1\d\d 100-199 3
阅读全文
摘要:游戏:10个人按1-10进行编号,围成一圈,从1开始报错,报到7的出队,下一个人从1开始重新报数,问最终剩下的人的编号 这个游戏是一个约瑟夫环问题,我们可以采用队列的形式来完成 from collections import deque def jsonf(target, list): #targe
阅读全文
摘要:通过弗洛伊德(floyd)算法,可以计算出任意点到任意点的最短距离 floyd算法的核心点: 任意一个节点i到节点j的最小距离,一定是节点i到节点j的距离与节点i经过任意节点k到节点j的距离中最小的距离 所以,想要完成最小距离的计算,需要经过3层的循环遍历 ###首先将节点间的距离,用图来存储 gr
阅读全文
摘要:求从start到end的最短路径 涉及到无回环路径的情况(A-》B、B-》A),可以使用dijkstra算法(狄克斯特拉) 算法步骤详解: 1、找出“最便宜”的节点,即可在最短时间内到达的节点(从start出发,最短距离的节点) 2、更新通过该节点,到其他邻居节点的最短距离 3、重复这个过程,直到对
阅读全文
摘要:生活小问题,1-100猜数游戏:游戏管理员默认写下一个数字,让用户来猜,管理员会根据用户猜的数字,来回答大了、小了提示,如何快速找到该数,假定指定数为70 第一次:猜50(折半),管理员:小了,那范围变成51-100 第二次:猜75(折半),管理员:大了,那范围变成51-74 第三次:猜62(折半)
阅读全文
摘要:题目:给定一个长字符串,查找该字符串中是否包含某短字符串,并且返回其在长字符串中的起始位置坐标,假定字符串不为空 思路:通过re模块,完成字符串查找工作 re.finditer(s, str):判断s在str中出现的位置,并返回一个迭代对象。该迭代对象中子元素中,包含span()方法,可以获取对应下
阅读全文
摘要:给定一个字符串,判断是否为回文字符串,回文字符串的概念:"abccba"/"abcba" ##方式一:利用字符串切片 def isHuiwen1(s): if not isinstance(s, str):#类型判断 return False if len(s) == 0: #非空校验 return
阅读全文
摘要:在学而思3面中,面试官给出一个题目,跟大家分享下自己的思路 题目:给定两个非空的有序数组,分别从两个数组中找出一个数(任意一组即可),使他们加和等于target值 我目前想到两种解题思路 ##思路一:暴力方式 》双层遍历 这种方式可以找到想要的答案,但是时间复杂度会相对比较高,O(m*n) ##思路
阅读全文
摘要:##今天在网易二面的时候,面试官出了一道个人感觉很有意思的面试题,现在分享给大家,看大家有没有什么好的其他的思路 问题:给定一个test.txt的日志文件,文件的内容如下: 20201011 103232 Exception: Null Pointer 20201011 101433 Excepti
阅读全文
摘要:采用两种方式,完成斐波那契数列的程序 ##非递归方式 def fib(n): a, b = 1, 2 if n == 0: return None if n <= 2: return 1 while n > 2: a, b = b, a+b n -= 1 return a ##递归调用 def fi
阅读全文
摘要:##归并排序,时间复杂度O(nlogn) def list_split(list): if len(list) < 2: return list else: mid = int(len(list)/2) leftlist = list_split(list[:mid]) rightlist = li
阅读全文
摘要:提供两个思路的快速排序,时间复杂度O(nlogn),最差情况为O(n*n) ##固定位置快速排序 def kuaisu(list): if len(list) < 2: return list else: temp = list[0] leftlist = [x for x in list[1:]
阅读全文
摘要:##插入排序,时间复杂度O(n*n),空间复杂度O(1) def charu(list): if len(list) < 2: return list else: for i in range(1,len(list)): key = list[i] j = i - 1 while j >=0 and
阅读全文
摘要:##选择排序,时间复杂度O(n*n),空间复杂度O(1) def xuanze(list): if len(list) <= 1: return list else: for i in range(len(list)-1): for j in range(i+1,len(list)): if lis
阅读全文
摘要:##通过冒泡,完成列表的排序 时间复杂度O(n*n),空间复杂度O(1) def maopao(list): if len(list) == 0: return None else: for i in range(len(list)-1): for j in range(len(list)-i-1)
阅读全文

浙公网安备 33010602011771号