这个用户很懒,还没有个人简介
私信
主帖 22
回帖
视频
提问
回答
资源
专栏
最长公共子序列最长公共子序列也成为LCS.出现频率非常高!给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回0。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace"是"abcde"的子序列,但"aec"不是"abcde"的子序列。两个字符串的公共子序列是这两个字符串所共同拥有的...
2022-07-07 17:03:48 206浏览 0点赞 0回复 0收藏
最长递增子序列最长递增子序列,也称为LIS,是出现非常高频的动态规划算法之一。这里对应力扣300给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。输入:nums[0,1,0,3,2,3]输出:4解释:最长递增子序列是[0,1,2,3],因此长度为4。对于最长递增子序列,如果不考虑动态规划的方法,使...
2022-07-07 17:03:36 193浏览 0点赞 0回复 0收藏
前言大家好,我是bigsai,好久不见,甚是想念(天天想念)!很久前就有小伙伴被动态规划所折磨,确实,很多题动态规划确实太难看出了了,甚至有的题看了题解理解起来都费劲半天。动态规划的范围虽然确实是很广很难,但是从整个动态规划出现的频率来看,这几种基础的动态规划理解容易,学习起来压力不大,并且出现频率非常高。这几个常见的动态规划有:连续子数组最大和,子数组的最大乘积,最长递增子序列(LIS),最长公共子序列(L...
2022-07-07 17:02:57 205浏览 0点赞 0回复 0收藏
哈希+双链表上面我们已经知道用哈希能够直接查到有木有这个元素,但是苦于删除!用List都很费力。更详细的说,是苦于List的删除操作,Map的删除插入还是很高效的。在上面这种情况,我们希望的就是能够快速删除List中任意一个元素,并且效率很高,如果借助哈希只能最多定位到,但是无法删除啊!该怎么办呢?哈希+双链表啊!我们将keyval的数据存到一个Node类中,然后每个Node知道左右节点,在插入链表的时候直接存入Map中,这样M...
2022-07-07 17:02:45 184浏览 0点赞 0回复 0收藏
前言大家好,我是bigsai,好久不见,甚是想念!最近有个小伙伴跟我诉苦,说他没面到LRU,他说他很久前知道有被问过LRU的但是心想自己应该不会遇到,所以暂时就没准备。奈何不巧,这还就真的考到了!他此刻的心情,可以用一张图来证明:他说他最终踉踉跄跄的写了一个效率不是很高的LRU,面试官看着不是很满意要求写一个O(1)复杂度的LRU……后来果真GG了,后来发现这是力扣146的一道原题。防止日后再碰到这个坑,今天和大家一起把...
2022-07-07 17:02:35 276浏览 0点赞 0回复 0收藏
0X08TOPK问题TOPK问题真的非常经典,通常问的有最小的K个数,寻找第K大都是TOPK这种问题,这里就用力扣215寻找数组第K大元素作为板子。详细分析:一文拿捏TOPKTOPK的问题解决思路有很多,如果优化的冒泡或者简单选择排序,时间复杂度为O(nk),使用优化的堆排序为O(n+klogn),不过掌握快排的变形就可以应付大体上的所有问题了(面试官要是让你手写堆排序那真是有点难为你了)。快排每次确定一个数pivot位置,将数分成两部分:左面的...
2022-07-07 17:02:23 217浏览 0点赞 0回复 0收藏
0X05二叉树层序(锯齿)遍历二叉树的遍历,对应力扣102,107,103.详细分析:一次面试,被二叉树层序遍历打爆了如果普通二叉树层序遍历,也不是什么困难的问题,但是它会有个分层返回结果的操作,就需要你详细考虑了。很多人会用两个容器(队列)进行分层的操作,这里其实可以直接使用一个队列,我们首先记录枚举前队列大小len,然后根据这个大小len去枚举遍历就可以得到完整的该层数据了。还有一个难点就是二叉树的锯齿层序(也叫之...
2022-07-07 16:55:21 218浏览 0点赞 0回复 0收藏
0X03环形链表对应力扣141和力扣142,力扣141环形链表要求为:给定一个链表,判断链表中是否有环,用O(1)内存解决。详细分析:环形链表找入口,真的太妙了这个问题利用快慢双指针比较高效,快指针fast每次走2步,slow每次走1步,慢指针走n步到尾时候快指针走了2n步,而环的大小一定小于等于n所以一定会相遇,如果相遇那么说明有环,如果不相遇fast先为null说明无环。具体代码为:publicclassSolution{publicbooleanhasCycle(List...
2022-07-07 16:53:27 633浏览 0点赞 0回复 0收藏
大家好,我是bigsai,好久不见,天天想念。最近不少小伙伴跟我交流刷题肿么刷,我给的建议就是先剑指offer和力扣hot100,在这些题中还有些重要程度和出现频率是非常非常高的,今天给大家分享当今出现频率最高的10道算法题,最近铺天盖地的出现,学到就是赚到。本篇主要内容为:0X01翻转链表力扣206和剑指offer24原题,题意为:给你单链表的头节点head,请你反转链表,并返回反转后的链表。分析:翻转链表,本意是不创建新的链表...
2022-07-07 16:52:53 213浏览 0点赞 0回复 0收藏
前言大家好,我是bigsai,好久不见甚是想念。昨晚有个同学参加了阿里的笔试题,笔试完后同学说这次笔试感觉难,跟我说了其中一道题,我看了感觉还是挺有质量的,看着这个难度都是第二题,总共三题感觉还是有难度的(瑟瑟发抖),想着还是和大家分享一下。描述一个正m边形,他想知道多边形中等腰锐角三角形的数量。(三角形的顶点要在多边形的顶点上)不同的三角形的定义:两个三角形,只要有一个点不在同一个位置上就算做不同的三角...
2022-07-06 17:15:02 206浏览 0点赞 0回复 0收藏
前言大家好,我是bigsai,好久不见!最近在一些群聊、私聊中遇到很多小伙伴的一个问题就是:刷题,大家也都重视到算法刷题对冲击大厂的重要性,越来越多的人开始卷起来了!但有的小伙伴是这样卷起来的,倒在刷力扣的路上,卷的自己都懵了。今天,我就给偏初学者的各种问题谈谈个人刷力扣这方面的观点。刷哪些题?大家刷力扣,目标肯定让自己有能力面对大厂的面试笔试,小部分就是为了坚持刷题保持感觉提升自己算法编程能力,那...
2022-07-06 17:14:19 194浏览 0点赞 0回复 0收藏
什么是AVL树大家好,我是bigsai,好久不见,甚是想念,今天给大家讲讲AVL树。对于树这种数据结构,想必大家也已经不再陌生,我们简单回顾一下。在树的种类中,通常分成二叉树和多叉树,我们熟悉的二叉树种类有二叉搜索(排序、查找)树、二叉平衡树、伸展树、红黑树等等。而熟悉的多叉树像B树、字典树都是经典多叉树。普通的二叉树,我们研究其遍历方式,因为其没啥规则约束查找和插入都很随意所以很少有研究价值。但是二叉树结构...
2022-07-06 17:13:50 366浏览 0点赞 0回复 0收藏
四种不平衡情况处理针对四种不平衡的情况,这里对每种情况进行详细的讲解。RR平衡旋转(左单旋转)这里的RR指的是节点模型的样子,其含义是需要左单旋转(记忆时候需要注意一下RR不是右旋转)!出现这种情况的原因是节点的右侧的右侧较深这时候不平衡节点需要左旋,再细看过程。在左旋的过程中,root(oldroot)节点下沉,中间节点(newroot)上浮.而其中中间节点(newroot)的右侧依然不变。它上浮左侧所以需要指向根节点(oldroot)(毕竟...
2022-07-06 17:13:43 230浏览 0点赞 0回复 0收藏
代码实现首先对于节点多个height属性。用于计算高度(平衡因子)插入是递归插入,递归是一个来回的过程,去的过程进行插入,回的过程进行高度更新,和检查是否平衡。推荐不要写全局递归计算高度,效率太低下,事实上高度变化只和插入和平衡有关,仔细考虑即不会有疏漏!代码写的比较早,如有命名不规范的情况,还请勿喷,如果有疏漏还请指出!importjava.util.ArrayDeque;importjava.util.Queue;publicclassAVLTree{classnode{int...
2022-07-06 17:06:01 185浏览 0点赞 0回复 0收藏
前言在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法。但是可能很多人对概念不是很清楚,什么是最小生成树一个有n个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有n个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。通俗易懂的讲就是最小生成树包含原图的所有节点而只用最少的边和最小的权值距离。因为n个...
2022-07-06 17:05:37 213浏览 0点赞 0回复 0收藏
代码实现上面分析了逻辑实现。下面我们用代码简单实现上述的算法。primpackage图论;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Comparator;importjava.util.List;importjava.util.PriorityQueue;importjava.util.Queue;publicclassprim{publicstaticvoidmain(String[]args){intminlength0;最小生成树的最短路径长度intmax66666;Stringcityname[]{"北京","武汉","南京","上海","杭州","广州","深圳"};in...
2022-07-06 17:05:28 165浏览 0点赞 0回复 0收藏
前言大家好,我是bigsai,好久不见,甚是想念!今天带大家征服二叉树的前中后序遍历,包含递归和非递归方式,学到就是赚到!很多时候我们需要使用非递归的方式实现二叉树的遍历,非递归枚举相比递归方式的难度要高出一些,效率一般会高一些,并且前中后序枚举的难度呈一个递增的形式,非递归方式的枚举有人停在非递归后序,有人停在非递归中序,有人停在非递归前序(这就有点拉胯了啊兄弟)。我们回顾递归,它底层其实是维护一个...
2022-07-06 17:04:49 164浏览 0点赞 0回复 0收藏
二叉树的后序遍历二叉树的后序遍历非递归方式实现起来难度最大的,能够手写非递归后序,一定能亮瞎面试官的眼!后序遍历在二叉树树的顺序可以看下图(红色箭头指向的表示需要访问的,可以看出如果子树为null,那肯定要访问,否则就是从右子树回来的时候才访问这个节点)。递归二叉树递归方式后序遍历很简单,跟前序中序的逻辑一样,在力扣145有后序的code测试大家可以自己尝试一下。这里直接放我写的后序递归方式:classSolution{...
2022-07-06 17:04:20 194浏览 0点赞 0回复 0收藏
给两个序列如何构造一棵二叉树经常会遇到给两个序列确定一个二叉树,当然这个序列其中之一必须包含中序遍历序列。前序、中序确定二叉树和后序、中序确定一个二叉树的原理一致。前序中序确定一棵二叉树根据一棵树的前序遍历与中序遍历构造二叉树。当然也是力扣105的原题。注意:你可以假设树中没有重复的元素。分析:给定一个前序序列和一个中序序列,且里面没有重复的元素,如何构造一棵二叉树呢?我们可以先单独观察两个序列的...
2022-07-06 17:03:49 171浏览 0点赞 0回复 0收藏
前言大家好,我是bigsai。在数据结构与算法中,二叉树无论是考研、笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,有个小老弟说他字节面试时候二叉树之字形打印紧张没写出来,力扣原题自己还写过很懊恼,我也回想起自己刚学习时候那段"混乱的"斗争,今天给大家讲讲二叉树的层序遍历。前面介绍了二叉排序树的构造和基本方法的实现,遍历也是比较重要的一环,并且二叉树的层序遍历也是bfs的最简单情...
2022-07-06 17:03:19 187浏览 0点赞 0回复 0收藏
获得成就
已积累 1114 人气
获得 0 个点赞
获得 0 次收藏