leetcode刷题
HCH996
一边失去,一边在寻找~
展开
-
数据结构_优先队列
优先队列(Priority Queue) 特点 能保证每次取出的元素都是队列中优先级别最高的。优先级别可以是自定义的,例如,数据的数值越大,优先级越高;或者数据的数值越小,优先级越高。优先级别甚至可以通过各种复杂的计算得到。 应用场景 从一堆杂乱无章的数据当中按照一定的顺序(或者优先级)逐步地筛选出部分乃至全部的数据。 举例:任意一个数组,找出前k大的数。 解法 1:先对这个数组进行排序,然后依次输出前k大的数,复杂度将会是O(nlogn),其中,n是数组的元素个数。这是一种直接的办法。 ...原创 2020-09-20 18:29:23 · 605 阅读 · 0 评论 -
数据结构_二叉树
寻找错误结点 一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请找到这两个错误节点并返回他们的值。保证二叉树中结点的值各不相同。 给定一棵树的根结点,请返回两个调换了位置的值,其中小的值在前。 import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeN原创 2020-09-19 19:19:31 · 111 阅读 · 0 评论 -
数据结构_树_完全二叉树判断
import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }*/ /* 解题思路:按层次进行遍历 1.如果当前节点的右孩子为空,那么它之后出现的所有节点必须为叶子节点(可以通过将leaf设置为true来确定)来.原创 2020-09-19 18:38:09 · 241 阅读 · 0 评论 -
数据结构_树_层次打印_序列化_反序列化
有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。 给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。 import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(原创 2020-09-19 18:34:11 · 161 阅读 · 0 评论 -
数据结构_树_遍历
树的遍历 例题一 请用递归方式实现二叉树的先序、中序和后序的遍历打印。 给定一个二叉树的根结点root,请依次返回二叉树的先序,中序和后续遍历(二维数组的形式)。 import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = v原创 2020-09-19 18:28:53 · 158 阅读 · 0 评论 -
数据结构_队列_双端队列
队列(Queue) 特点:和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样。对于队列的数据来说,我们只允许在队尾查看和添加数据,在队头查看和删除数据。 实现:可以借助双链表来实现队列。双链表的头指针允许在队头查看和删除数据,而双链表的尾指针允许我们在队尾查看和添加数据。 应用场景:直观来看,当我们需要按照一定的顺序来处理数据,而该数据的数据量在不断地变化的时候,则需要队列来帮助解题。在算法面试题当中,广度优先搜索(Breadth-First Search)是运用队列最多的地方,我们将原创 2020-09-19 18:25:10 · 777 阅读 · 0 评论 -
数据结构_栈
栈(Stack) 特点:栈的最大特点就是后进先出(LIFO)。对于栈中的数据来说,所有操作都是在栈的顶部完成的,只可以查看栈顶部的元素,只能够向栈的顶部压⼊数据,也只能从栈的顶部弹出数据。 实现:利用一个单链表来实现栈的数据结构。而且,因为我们都只针对栈顶元素进行操作,所以借用单链表的头就能让所有栈的操作在 O(1) 的时间内完成。 class Node{ int data; Node next; public Node(int data) { this.data = data; }原创 2020-09-19 13:28:10 · 143 阅读 · 0 评论 -
数据结构_链表
链表(LinkedList) 单链表:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。 双链表:与单链表不同的是,双链表的每个结点中都含有两个引用字段。 链表的优缺点 链表的优点如下: 链表能灵活地分配内存空间; 能在 O(1) 时间内删除或者添加元素,前提是该元素的前一个元素已知,当然也取决于是单链表还是双链表,在双链表中,如果已知该元素的后一个元素,同样可以在 O(1) 时间内删除或者添加该元素。 链表的缺点是: 不像数组能通过下标迅速读取元素,每次都原创 2020-09-19 11:52:20 · 133 阅读 · 0 评论 -
01常用数据结构_字符串
LeetCode 第 242 题:给定两个字符串 s 和 t,编写一个函数来判断 t 是否是 s 的字母异位词。 https://leetcode-cn.com/problems/valid-anagram/ 解题思路 一个重要的前提“假设两个字符串只包含小写字母”,小写字母一共也就 26 个,因此: 可以利用两个长度都为 26 的字符数组来统计每个字符串中小写字母出现的次数,然后再对比是否相等; 可以只利用一个长度为 26 的字符数组,将出现在字符串 s 里的字符个数加 1,而出现在字符串 t原创 2020-09-19 10:28:32 · 105 阅读 · 0 评论 -
Spark大数据WordCount代码实例演示
//手动编写一个wordcount程序 //要导入Strom的jar包 //把lib下所有的jar包包含在工程里就好了 Topology = spout(采集数据) + bolt(s)(处理数据) //要创建主程序来书写自己的任务 public class WordCountTopology{ public static void main(String[] args){ //创建一个任务...原创 2018-08-26 12:53:30 · 366 阅读 · 0 评论 -
231. Power of Two
题目描述:判断给定的数是否是2的n次方 解题心得:小技巧:利用n和n-1尽心与操作 代码如下: class Solution{ public boolean isPowerOfTwo(int n){ //当n为0的时候,返回的就是否 if(n <= 0){ return false; } //否则返回的是n与(n-1)的与的结果 return !(n ...原创 2018-08-13 21:06:19 · 114 阅读 · 0 评论