摘要:
"160. 相交链表" 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表 : "" 在节点 c1 开始相交。 示例 1: "" 示例 2: "" 示例 3: "" 注意: 如果两个链表没有交点,返回 . 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽 阅读全文
摘要:
BFS(广度优先搜索) 常用来解决最短路径问题。 第一次便利到目的节点时,所经过的路径是最短路径。 几个要点: 只能用来求解 无权图 的最短路径问题 队列:用来存储每一层便利得到的节点 标记:对于遍历过的结点,应将其标记,以防重复访问 "279. 完全平方数" 题目描述 给定正整数 n ,找到若干个 阅读全文
摘要:
DFS(深度优先搜索) 常用来解决可达性的问题。 两个要点: 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈。 标记:和 BFS 一样同样需要对已经遍历过的节点进行标记。 "695. 岛屿的最大面积" 题目描述 给定一个包含了一些 0 和 1的非空二维数组 , 一 阅读全文
摘要:
title: 763 划分字母区间 date: 2019 04 15 21:10:46 categories: LeetCode tags: 字符串 贪心思想 双指针 题目描述 字符串 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串 阅读全文
摘要:
title: 406 根据身高重建队列 date: 2019 04 15 21:13:06 categories: LeetCode tags: Java容器 比较器 贪心思想 题目描述 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对 表示,其中 是这个人的身高, 是排在这个人前面且身高大 阅读全文
摘要:
题目描述 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 1. 可以认为区间的终点总是大于它的起点。 2. 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 示例 2: 示例 3: 解题思路 贪心思想: 先找到个数最多的一系列不重叠区间 阅读全文
摘要:
题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 示例 2: 示例 3: 解题思路 使用桶排序,和 "第 347 题" 思路基本一致,区别就是,第 347 题是对动态数组的操作,本题是对字符串的操作。 Java 实现 java public String freque 阅读全文
摘要:
题目描述 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 示例 2: 说明: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度 必须 优于 O( n log n ) , n 是数组的大小。 解题思路 采用桶排序。所谓桶排序 阅读全文
摘要:
题目描述 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。 示例 1: 示例 2: 说明: 1. 所有输入的字符串只包含小写字母。 2. 字典的大小不会超过 阅读全文
摘要:
题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O( n2 ) 。 进阶: 你能将算法的时间复杂度降低到 O( n log n ) 吗? 解题思路 利用动态规划和二分查找解题。 阅读全文