数据结构
文章平均质量分 54
Wangling_blog
这个作者很懒,什么都没留下…
展开
-
每日写题分享--优先队列
优先队列最小的k个数数据流的中位数原创 2021-12-16 19:09:39 · 3557 阅读 · 6 评论 -
每日写题分享--排序链表//归并排序
题目描述:排序链表:自顶向下归并排序、自底向上归并排序原创 2021-12-15 21:39:30 · 1112 阅读 · 12 评论 -
每日写题分享--双栈实现队列
题目描述:题目链接:双栈实现队列解题思路:这题考察的就是出入栈和出入队列的顺序,栈是先进后出的数据结构,队列是先进先出的数据结构,要用栈实现队列的功能,只要用两个站互相倒元素,出入栈顺序就能反过来。这里我没有直接使用stack,因为stack继承了vector接口,vector底层是Object[]数组,要考虑空间扩容和移位等因素,会导致速度比较慢。而LinkedList实现了Deque接口,可以用Linkedlist做stack的容器。1.创建两个栈2.在队尾插入元素。前.原创 2021-12-01 17:21:38 · 360 阅读 · 2 评论 -
每日写题分享--包含min函数的栈/双栈实现
每日写题分享--包含min函数的栈双栈结构实现原创 2021-12-01 17:00:23 · 1302 阅读 · 0 评论 -
每日写题分享--复制带有随机指针的复杂链表/HashMap
带有随机指针的复杂链表的深度拷贝HashMap一一对应原创 2021-12-01 16:35:57 · 757 阅读 · 0 评论 -
每日写题分享--第k个最小的素数分数--优先队列/HashMap
题目描述:给你一个按递增顺序排序的数组 arr 和一个整数 k 。数组 arr 由 1 和若干 素数组成,且其中所有整数互不相同。对于每对满足 0 < i < j < arr.length 的 i 和 j ,可以得到分数 arr[i] / arr[j] 。那么第k个最小的分数是多少呢?以长度为 2 的整数数组返回你的答案, 这里answer[0] == arr[i]且answer[1] == arr[j] 。示例 1:输入:arr = [1,2,3,5], ...原创 2021-11-29 17:40:57 · 87 阅读 · 0 评论 -
//删除链表中重复节点--快慢指针
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5题目链接戳此思路:定义快慢指针,快指针比慢指针多走一步,慢指针指向重复前的节点,当快指针碰到重复节点慢指针就不走了,快指针一直走到最后一个重复的节点上停下来,然后让慢指针的next指向快指针的next,快指针继续向后走一步,这样相对位置就又回到起始的时候了。注意如果是快.原创 2021-11-26 17:33:18 · 471 阅读 · 0 评论 -
每日写题分享--单词拆分/动态规划/剪枝
题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典,判定s 是否可以由空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。题目链接戳此思路:首先将字典放进set里面,方便判断字典中是否包含某个单词,并求出字典中最长单词的长度(下面解析中有解释)。再根据题意,如果一个字符串合法(即拆分后的单词全都在字典里能查询到),那么这个字符串去掉一个单词也是合法的,由此能得到动态转移方程。具体实现根据下面代码解析:如果在单词长度为 i 时,j 从 i.原创 2021-11-26 16:13:14 · 822 阅读 · 1 评论 -
每日写题分享--菲波那切数列--递归/迭代/动态规划/剪枝
题目描述:题目链接戳此思路:方法一:迭代只要计算出要求的那一项的前一项和前前项的和就是那一项的菲波那切数列。定义first为第一项,second为第二项,fib为前两项的和即第三项。此后三项一起向后走,就可以求出第n项。代码实现如下:public class Solution { public int Fibonacci(int n) { int first = 1; int second = 1; int fib = .原创 2021-11-24 14:36:21 · 480 阅读 · 0 评论 -
每日写题分享--leetcode563.二叉树的坡度--双递归及优化
题目链接:二叉树的坡度原题链接题目描述:给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。思路:通过递归算出每个节点左子树val值的和sum1、右子数val值的和sum2,sum1与sum2差的绝对值就是每个节点的坡度,求总坡度直接将所有坡度相加即可。优化前代码如下:原创 2021-11-20 20:22:11 · 87 阅读 · 0 评论 -
每日写题分享--枚举和HashMap
题目链接:力扣力扣594.最长和谐子序列题目描述:和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示例 1:输入:nums = [1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是 [3,2,2,2,3]思路:方法一:枚举。类似于滑动窗.原创 2021-11-20 16:49:34 · 262 阅读 · 0 评论 -
2021-11-15力扣819.最常见的单词,HashMap,H
力扣原题链接题目描述:给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"]输出: "ba..原创 2021-11-15 21:09:00 · 92 阅读 · 0 评论 -
2021-11-15HashMap求前K个高频单词
原题链接692. 前K个高频单词 - 力扣(LeetCode) (leetcode-cn.com)思路:HashMap存放单词和统计次数,打包成entry,创建大小为K的小根堆,找到最大的出现次数最多的k个单词,出队用List接收,最后反转列表。代码:classSolution{publicList<String>topKFrequent(String[]words,intk){HashMap<String,Integer...原创 2021-11-15 18:44:12 · 293 阅读 · 0 评论