
数据结构
一些数据结构,和leetcode的代码实现
阳阳华子
想赚大钱的小哥哥一枚~~~
展开
-
leetcode1143. 最长公共子序列JAVA实现
2.如果两个字符串A和B最后一个字符不相同,则两者也是各去掉最后一个字符变成A1和B1,然后计算A和B1的最长公共子序列,计算A1和B的最长公共子序列,最后将这两个结果的最大值返回。1.两个字符串A和B比较最后一个字符,如果相等两个字符串就各去掉最后一个字符分别变成A1和B1,然后先计算A1和B1的最长公共子序列个数,最后将结果+1返回;字符串1:abcbdab 字符串2:bdcaba。分析题目:这是一个经典的二维动态规划的题目。转化为数组语言后就是。原创 2023-10-27 22:00:00 · 187 阅读 · 1 评论 -
leetcode103. 二叉树的锯齿形层序遍历JAVA实现
1.这里我想到的是从上向下遍历的时候携带一个辅助数的奇偶性用来标识当前这层是左到右遍历还是右到左遍历。我定的是如果辅助数是奇数就从左到右遍历。排序我们就可以将元素插入到头部这样集合获取的元素就是从右到左的排序了(这里为了方便从集合的头部加入数据,采用的是链表LinkedList)分析题目:要求是层序遍历,并且每层的层序遍历的顺序是不一样的,是左右交替遍历的,2.然后我用的是递归,先遍历左子节点再遍历右子节点所以正常情况得到的集合中元素是。排序的,如果通过辅助数知道这层要。原创 2023-10-25 22:14:33 · 160 阅读 · 1 评论 -
leetcode 209. 长度最小的子数组
问题,我认为滑动窗口就是维护一个满足条件的区间,例如这一题就是要求我们维护一个子数组,要求这个子数组里面的值相加要大于等于target的值并且这个子数组要尽可能的短,然后返回其最小区间的长度。所以我们需要在维护区间的同时,并对区间进行监测,在每次满足条件时去比较当前区间是不是长度最小的区间。感觉滑动窗口的问题都是要确定左右边界,然后根据条件进行区间的扩大和缩小 ^ ^原创 2024-01-02 11:15:10 · 448 阅读 · 1 评论 -
leetcode337. 打家劫舍 III JAVA实现
1.对于每个节点来说都有两种选择要么偷要么就不偷,偷的话金额就可以加上当前的值,不偷的话就不能加上,这里我定义了一Boolean值,为true就表明当前节点可以偷,为false就表明当前节点不能偷。题目分析:首先分析题目,大概就是记忆化递归也就是动态规划的题目,官方的写的实在是简洁阿。原创 2023-10-26 20:00:00 · 136 阅读 · 0 评论 -
LRU缓存算法JAVA实现
首先LRU缓存要求要淘汰最久未使用的数据,所以我们存放的数据它有个先后的顺序,这里我想到的数据结构就是链表,又因为需要判断关键字key是否存在于缓存中,如果只是单纯的链表数据结构的话遍历出这个key的时间复杂度是o(n),所以我们考虑给他升个级再给它加一个哈希表,哈希表key存关键字,value存相应的链表节点,这样就能很快的判断缓存中是否有该关键字对应的数据。LRU缓存是指在插入新数据时如果超过了该缓存的容量就将最久未使用的数据释放掉,这是。请你设计并实现一个满足。原创 2023-10-19 17:51:15 · 209 阅读 · 1 评论