
JAVA
文章平均质量分 65
落雨飘飘
路漫漫其修远兮,吾将上下而求索
展开
-
leetcode437路经总和III
路经总和III 题目描述 想法 这种问题类似于前缀和问题,首先想到的解法是用HashMap来记录遍历到某个节点时整条路径上所以节点的值的和,但是这种方式无法区分所得到的满足条件的解中所有节点都在同一条路径上,(数组是由于路径的唯一性是可以利用这种方式来解决的,具体做法参见leetcode560和为K的数组),想到树的递归特性,考虑利用递归问题来解决这个问题。 题目中提出了三个要求: 路径不需要...原创 2020-04-20 16:16:00 · 227 阅读 · 0 评论 -
leetode114二叉树展开为链表
题目描述 想法 解法一 解法二 解法二的变形 解法三原创 2020-04-18 23:53:40 · 145 阅读 · 0 评论 -
leetcode78子集
题目描述 想法 由于数组元素是不重复的,假设数组长度为n,那么子集总数应该是2n2^{n}2n个,且子集的大小为0,1,2…n个,数量分别为Cin,i为子集大小,我们可以采用减治的方法来解决这个问题,以一个普通的输入为例 输入nums = {x1,x2,x3.....xn-1,xn}输入大小为n, 那么这个输入数组的所有子集可以分成 nums1 = {x1,x2,x3....xn-1}的所有子集...原创 2020-04-18 21:36:19 · 190 阅读 · 0 评论 -
leetcode206反转链表
题目描述非常简单,实现起来也比较容易,但是第一次看的时候有点被吓到了,而且有些地方没想明白,所以做一下记录。 迭代 迭代的想法是比较简单的,由于ListNode中不含对前面节点的引用,所以为了让链表的方向反转过来,我们需要引入一个指针来指向前面的节点,分别将这两个节点记为prev和curr,那么当前的状态可以这么表示:prev=>curr=>curr.next,在这一步 我们想做的是将...原创 2020-04-17 15:25:03 · 148 阅读 · 0 评论 -
leetcode160相交链表
看到这道题首先想到的是两个链表相交的部分只可能出现在两个链表的尾部,接着就自然想到了使用两个指针来逐个对比ListNode的值,就有了接下来的方法: 简单的想法 由于两个链表长度不一定一致,而且我们在遍历一次链表之前没有办法知道两个链表各自的长度,这就导致了我们并能确定从第几个节点开始进行比较,但是可以明确的是,相交的位置肯定不会是长链表的前k个节点,这里k = ListA.size() - Li...原创 2020-04-16 21:45:47 · 253 阅读 · 0 评论 -
Java进行词频统计并排序
要求:当前目录下给出一个名为"news.txt"的文件,该文件每个word是以空格间隔,标点符号已经被去除,请写出一个完整的可执行的Java程序,对"news.txt"文件中出现的,每个word进行词频统计,并按从大到小的顺序输出出现词频最高的10个word。 package com.lyp.exam; import java.io.BufferedInputStream; import jav...原创 2019-11-06 21:35:29 · 2849 阅读 · 0 评论 -
二叉树、二叉查找树与红黑树的原理及Java实现
JAVA二叉树 1. 二叉树 在数据量较小的情况下,采用链表可以获得较高的性能(查询时为O(n)),在数据量较大的情况下,链表的检索性能会下降,这时使用二叉树(Binary Tree)进行存储,查询时时间复杂度为O(logn)。 下面为二叉树的示意图: { this.data = data; } public E getData(){ return this.data; } public void setNext(...原创 2019-08-03 20:55:25 · 4105 阅读 · 0 评论