算法
郑*杰
这个作者很懒,什么都没留下…
展开
-
快慢指针算法
题目:给定一个头结点为 head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 :输入:[1,2,3,4,5],输出:返回的结点值为 3输入:[1,2,3,4,5,6] 输出:此列表中的结点 4解题思路:由于链表不能直接遍历,但可以使用next将链表的数据一个个拿出来,设定两个值,一个是慢指针slow,一个快指针fast,fast每次比slow多移动一次,用了两次next,当fast结束时,slow刚好处于链表的中间class Lis...原创 2022-02-17 18:30:29 · 194 阅读 · 0 评论 -
双指针算法
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]# 解题思路:遇到非0,左右指针都继续右移,交换后数据保持不变,遇到0,右指往后移,紧接下次右指则会遇到非0,此时就可以跟左指针进行交换得到0class Solution: def moveZeroes(self, nums) : .原创 2022-02-16 16:03:45 · 331 阅读 · 0 评论 -
冒泡排序法
冒泡排序是先从第1位跟第2位比较,哪位大就往前移,循环一次最大值就会放在最后面,循环两次,第二大值会放在最后倒数第二数,以此类推,循环整个列表长度n就可以得到一个有序列表。class Solution: def search(self,list_num): n =len(list_num) for j in range(n): # 循环n次,反复把最大的值往后排, 直到每个都排序完成 for i in range(n-1): #这个循环可原创 2022-02-16 14:51:35 · 98 阅读 · 0 评论 -
二分查找法
二分查找法适用于有序的列,通过每次取列表中间的数来判断目标值是否在列表中,如果中间数大于目标值,那么目标值则在中间数左侧,反之则在右侧。class Solution: def search(self,list_num:list,tag): low,high = 0,len(list_num)-1 while low <=high: mid = (high - low ) // 2 + low num =原创 2022-02-16 14:44:10 · 169 阅读 · 0 评论