hashmap

[Leetcode]652.Find Duplicate Subtrees

自闭症网瘾萝莉.ら 提交于 2020-01-28 23:43:03
链接: LeetCode652 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 相关标签: 深度优先搜索 深度优先搜索加哈希表。由于在寻找重复子树过程中,我们需要记住每一步的结果,并且最终记录是否重复,这里可以将子树存储在哈希表中,存储结构使用二叉树进行序列化即可。最终,我们只需要记录在搜索过程中重复数为2的键即可,这样防止出现2个以上重复子树时,返回了多个相同的根节点。 代码如下: python: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None import collections class Solution: def findDuplicateSubtrees(self, root: TreeNode) -> List[TreeNode]: res = [] if not root:return res hashmap = collections.defaultdict(int) self.dfs(root,hashmap,'',res) return res

Android Jetpack系列——ViewModel源码分析

人走茶凉 提交于 2020-01-28 21:10:24
本文章已授权微信公众号郭霖(guolin_blog)转载。 本文章主要是对 ViewModel 进行源码分析,建议对着 示例代码 阅读文章, 示例代码 如下: ViewModelDemo 本文章使用的是 Android SDK 29 的源码分析。 定义 Android框架管理 UI控制器的生命周期 (例如: Activity 和 Fragment ), Framework 可能决定 销毁 或者 重新创建一个UI控制器 ,以响应某些用户操作或者设备事件,这些操作或者事件完全超出你的控制。 如果系统 销毁 或者 重新创建一个UI控制器 ,那么你存储在其中的任何 与UI相关的临时数据 都 丢失 ,例如:你的应用程序在某个 Activity 中包含一个用户列表,当 配置信息 更改重新创建 Activity 时,新的 Activity 必须重新获取用户列表。对于简单数据, Activity 可以使用 onSaveInstanceState() 方法,并且在 onCreate() 方法中从 Bundle 中恢复数据,但是这种方法只适用于 少量的、可以序列化和反序列化的数据 ,而不是 潜在的大量数据的用户列表 或者是 很多的Bitmap 。 另外一个问题是 UI控制器 经常需要进行 异步调用 ,这可能需要一些时间才能返回, UI控制器 需要管理这些调用,并确保系统在 销毁 后对其进行清理,以避免

Java学习(三)

对着背影说爱祢 提交于 2020-01-28 00:18:34
Java学习(三) 标签(空格分隔): Java 集合框架 java集合类主要有以下几种: List结构的集合类: ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类: HashMap类,Hashtable类 Set结构的集合类: HashSet类,TreeSet类 Queue结构的集合 Queue接口 HashMap和Hashtable的区别 HashMap与Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也有区别: 一、历史原因: Hashtable 是基于陈旧的Dictionary类的,HashMap是java1.2引进的Map接口的一个实现 二、同步性: Hashtable 是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率 三、值:HashMap可以让你将空值作为一个表的条目的key或value但是Hashtable是不能放入空值的(null) ArrayList和Vector的区别

九章算法 基础 Lecture 4 BFS

∥☆過路亽.° 提交于 2020-01-27 06:58:58
BFS 什么时候使用BFS 图的遍历 traversal in graph 1.1 层级遍历 level order traversal 1.2 由点及面 connected component 1.3 拓扑排序 topological sorting 最短路径 shortest path in simple graph 2.1 仅限简单图求最短路径 2.2 即,途中每条边长度都是 1,且没有方向 最短路径问题可以用BFS或者DP解决 最长路径问题可以用DFS或者DP解决 BFS还有一个东西很重要就是是否需要分层遍历,如果需要分层遍历,需要添加一行代码同时添加一个 for loop。比如说例题 Zombie in Matrix, 例题 Knight shortest path 补充知识 BFS采用 FIFO Queue 实现,DFS采用 Stack 实现。 在JAVA中,Queue 是一个接口,具体实现可以采用LinkedList. LinkedList API remove(), Item, Retrieves and removes the head (first element) of this list. size(), int, Returns the number of elements in this list isEmpty(), boolean, Returns

The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files [duplicate]

社会主义新天地 提交于 2020-01-27 04:12:09
问题 This question already has answers here : Error when using LogManager (l4j2) with Java 8 (java.lang.reflect.AnnotatedElement cannot be resolved) (5 answers) Closed 5 years ago . I am writing a simple Java program on Eclipse. import java.util.HashMap; public class Demo { public static void main(String[] args) { HashMap<String, String> hash = new HashMap(); } } The above program generates the following errors. The project was not built since its build path is incomplete. Cannot find the class

The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files [duplicate]

假装没事ソ 提交于 2020-01-27 04:11:34
问题 This question already has answers here : Error when using LogManager (l4j2) with Java 8 (java.lang.reflect.AnnotatedElement cannot be resolved) (5 answers) Closed 5 years ago . I am writing a simple Java program on Eclipse. import java.util.HashMap; public class Demo { public static void main(String[] args) { HashMap<String, String> hash = new HashMap(); } } The above program generates the following errors. The project was not built since its build path is incomplete. Cannot find the class

JAVA笔试题小集

孤者浪人 提交于 2020-01-27 04:02:10
JAVA笔试题小集 2008/05/08 12:54 第一 ,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 第二 ,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类

(二)flink的DataSet:广播变量的使用

喜夏-厌秋 提交于 2020-01-27 03:33:44
文章目录 广播变量允许您将数据集提供给的operator所有并行实例,该数据集将作为集合在operator中进行访问 注意:由于广播变量的内容保存在每个节点的内存中,因此它不应该太大,常见使用在一些字典映射的环境中 package batch ; import org.apache.flink.api.common.functions.MapFunction ; import org.apache.flink.api.common.functions.RichMapFunction ; import org.apache.flink.api.java.DataSet ; import org.apache.flink.api.java.ExecutionEnvironment ; import org.apache.flink.api.java.operators.MapOperator ; import org.apache.flink.api.java.tuple.Tuple2 ; import org.apache.flink.configuration.Configuration ; import java.util.ArrayList ; import java.util.HashMap ; import java.util.List ; public class

高性能编程——不安全的容器类HashMap

守給你的承諾、 提交于 2020-01-27 00:20:05
文章目录 HashMap 带注释的源码 1.7 初始长度和扩容 1.8 红黑树 HashMap 带注释的源码 1.7 /* * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java . util ; import java . io . * ; /** * Hash table based implementation of the <tt>Map</tt> interface. This * implementation provides all of the optional map operations, and permits * <tt>null</tt> values and the <tt>null</tt> key. (The <tt>HashMap</tt> * class is roughly equivalent to <tt>Hashtable</tt>, except that it is *

HashMap简介

女生的网名这么多〃 提交于 2020-01-26 21:10:33
HashMap简介 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 适用场景:读多写少,(读取多插入少) 一般场景 --》 一次写入,剩下全读。 读取速度最快的,是根据下标读数组,时间复杂度O(1) ,但是插入速度慢。 大概结构上个图: 但实际的结构构造要比这复杂的多,涉及到红黑树结构。(找了个大概的图,先了解下。) 接下来复习下几种基础结构: 数组 :采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n) 数组优缺点总结 优点: 1、按照索引查询元素速度快 2、能存储大量数据 3、按照索引遍历数组方便 缺点: 1、根据内容查找元素速度慢 2、数组的大小一经确定不能改变。 3、数组只能存储一种类型的数据 4、增加、删除元素效率慢 5、未封装任何方法,所有操作都需要用户自己定义。 线性链表 :对于链表的新增,删除等操作