
算法与数据结构
文章平均质量分 85
算法
Kudo新一
这个作者很懒,什么都没留下…
展开
-
大根堆排序
堆是完全二叉树,分为大根堆和小根堆。原创 2024-03-14 14:46:32 · 492 阅读 · 0 评论 -
力扣75题 算法
输入:nums1 = [1,2,3], nums2 = [2,4,6] 输出:[[1,3],[4,6]] 解释: 对于 nums1 ,nums1[1] = 2 出现在 nums2 中下标 0 处,然而 nums1[0] = 1 和 nums1[2] = 3 没有出现在 nums2 中。输入:nums1 = [1,2,3,3], nums2 = [1,1,2,2] 输出:[[3],[]] 解释: 对于 nums1 ,nums1[2] 和 nums1[3] 没有出现在 nums2 中。原创 2024-03-14 01:33:18 · 1006 阅读 · 0 评论 -
二叉树算法
4.接下来2弹出,此时节点不是统计的那层了,做结算Max,当前层更新++,当前节点数重新置为1(因为发现的节点肯定是存在的,肯定是1)2弹出,2有右树,右树5压栈,5无左子树,于是弹出并打印,再把5的右树压栈,都没有,把2弹出。2.先弹出1,当前层从map知道是在1层,当前层还是正在统计的那层,1==1,所以count++,nodes变成1。弹出7,放入收集栈,此时压7的左和右,但都是null,于是弹出6,放入收集栈。2出栈,2有右树5,把5压入栈,再把5所有左数压入栈里,6进栈7进栈。原创 2024-03-14 01:32:20 · 354 阅读 · 0 评论 -
算法的渐进时间复杂度
1.初始化【构造注入,懒加载】// 数组中实际元素个数int size;this(10);// 增 塞到数组最后面// 假设实际容量已经最大了// 法①:数组满了无法出入// 法②:扩容size++;// 法② 复用// 加到中间// 法①:数组满了无法出入// 法②:扩容// 负数索引和超过边界都无法插入数据// 法①:抛异常,不在数组边界内i >= size;i--){// 不可以忘记!!!!size++;// 加到开头add(0,e);原创 2024-03-14 01:29:12 · 683 阅读 · 0 评论 -
快速排序算法
总拿最后一个数做划分,划分好最后一个数和大于区的第一个数做交换,然后在小于等于5区域和大于5区域继续往复循环操作,都取各自的最后一个数作为基准数。每次排序都能搞定一堆等于5的区域。只要最后一个数和大于区的第一个数做交换。L到R随机选个数和最后位置做交换,拿最后位置做划分。然后左右侧以最后一个数作为基准数,继续做递归。partition后就返回12和13,L和R的索引分别是10和15。原创 2024-03-14 01:29:48 · 590 阅读 · 0 评论 -
双指针算法
力扣:704、344【反转字符串】、167、5【回文串 暴力解法】、无重复+问题 首先考虑双指针解法1.结果比目标,小了要变大,左指针右移+,2.结果比目标,大了要变小,右指针左移-,3.中心开花🌼相背走,左指针减减右指针加(加)。原地修改输入数组:不增加与原数组长度相关的空间。双指针交换 最中间独立的不用管a b c d ee b c d a回文数:正着读反着读都是一样的。原创 2024-03-05 01:17:34 · 1028 阅读 · 0 评论 -
二叉树算法
4.接下来2弹出,此时节点不是统计的那层了,做结算Max,当前层更新++,当前节点数重新置为1(因为发现的节点肯定是存在的,肯定是1)2弹出,2有右树,右树5压栈,5无左子树,于是弹出并打印,再把5的右树压栈,都没有,把2弹出。2.先弹出1,当前层从map知道是在1层,当前层还是正在统计的那层,1==1,所以count++,nodes变成1。弹出7,放入收集栈,此时压7的左和右,但都是null,于是弹出6,放入收集栈。2出栈,2有右树5,把5压入栈,再把5所有左数压入栈里,6进栈7进栈。原创 2024-03-05 01:18:35 · 812 阅读 · 0 评论