
LeetCode
文章平均质量分 66
Hansry
我希望能有个明亮的落地窗,每天都晒一晒太阳。。。
展开
-
Leetcode 1 Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same ...原创 2018-03-24 23:32:00 · 219 阅读 · 0 评论 -
LeetCode121 买卖股票的最佳机会 (动态规划)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是...原创 2018-10-25 23:42:54 · 340 阅读 · 0 评论 -
回溯算法
1.概念回溯算法实际上是一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回到上一步还能执行的状态,尝试别的路径。 类似于走迷宫一样,假设我们到了每一个岔路口都规定,除了走过的地方,按照先往前走到底,如果不能走了,再退回到上一个岔路口,走左边,如果不行再走右边,如果再不行就往后退。每次退回就是每次的回溯,所以回溯法要保存每一次的状态...原创 2018-10-29 22:48:06 · 588 阅读 · 0 评论 -
LeetCode15 18 16三数之和 四数之和 最接近的三数之和 (数组)
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]解题思路:先将数组排序,小的在前大的...原创 2018-10-24 14:34:30 · 1475 阅读 · 0 评论 -
前缀树和后缀树
转自:从Trie树(字典树)谈到后缀树引言谈及Tire树与后缀树之前,先看俩个问题:**第一个问题:**一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。其中,海量数据处理面试题集锦与Bit-map详解中给出的参考答案:用trie树统计每个词出现的次数,时间复杂度是O(nle)(le表示单词的平均长度),然后是找出出现最频繁的前1...转载 2018-10-31 20:04:45 · 1405 阅读 · 0 评论 -
LeetCode 39 40 组合总和 组合总和II (回溯)
1.组合总和难度:中等给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = ...原创 2018-10-30 11:24:22 · 750 阅读 · 0 评论 -
Leetcode 96 95 不同的二叉搜索树(动态规划、搜索树) 不同的二叉搜索树II (递归、搜索树)
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / ...原创 2018-10-27 11:36:31 · 966 阅读 · 0 评论 -
LeetCode 257 113 437 二叉树的所有路径 路径之和II 路径之和III(二叉树,递归)
1.二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1-&原创 2018-10-27 20:44:16 · 524 阅读 · 0 评论 -
LeetCode 78 90 子集 子集II (回溯,递归)
1.子集难度:中等给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路:该题利用递归即可解决,注意的是可将输入先排下序。class Solution {public: ...原创 2018-10-30 20:20:55 · 468 阅读 · 0 评论 -
LeetCode79 单词搜索 (回溯,时间不是很理想)
1.单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, ...原创 2018-10-30 23:21:25 · 363 阅读 · 0 评论 -
LeetCode54 59 螺旋矩阵 螺旋矩阵II (数组)
1.螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4...原创 2018-10-25 19:55:30 · 618 阅读 · 0 评论 -
LeetCode 897 129 98 递增顺序查找树 求根到叶子节点之和 验证二叉树 (树,深度优先搜索)
1.递增顺序查找树给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9...原创 2018-10-28 20:37:59 · 608 阅读 · 0 评论 -
Leetcode88 21 合并俩个有序数组、合并俩个有序链表(数组链表)
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...原创 2018-10-25 16:34:21 · 300 阅读 · 0 评论 -
Leetcode 7 Reverse Integer
Given a 32-bit signed integer, reverse digits of an integer. Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21Note: Assume we are d...原创 2018-03-25 15:53:25 · 213 阅读 · 0 评论 -
LeetCode 12 Integer to Roman
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.原文的意思很简单,就是将输入的整型变量转化为罗马数字进行输出,整型变量和罗马数字的转换关系如下所示:I(1)I(1)I (1), V(5)V(5)V(5), X(10)X(1...原创 2018-03-25 21:12:25 · 260 阅读 · 0 评论 -
LeetCode 2 俩数相加 (链表)
何为链表?链式存储的线性表,简称链表。链表由多个链表元素组成,这些元素称为结点。结点之间通过逻辑连接,形成链式存储结构。存储结点的内存单元,可以是连续的也可以是不连续的。逻辑连接和物理存储次序没有关系。链表分为俩个域:a.值域:用于存放结点的值b. 链域:用于存放下一个结点的地址或者位置从内存角度出发:链表可分为静态链表和动态链表。从链表存储方式的角度出发:链表可分为单链表、双链表、以...原创 2018-10-04 16:53:58 · 311 阅读 · 0 评论 -
Leetode 144 94 145 110 111 104 二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历 平衡二叉树 二叉树的最小深度 二叉树的最大深度 (二叉树)
1. 二叉树的前序遍历、中序遍历和后序遍历**前序遍历:**若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。特点:a. 根----->左------->右 b. 根据前序遍历的结果可知第一个访问的必定是root结点。**中序遍历:**若二叉树为空,则空操作返回,否则从根结点出发 (注意不是先访问根结点),先中序遍历根结点的左子树,再访问根结点...原创 2018-10-05 10:02:45 · 273 阅读 · 0 评论 -
Leetcode29-俩数相除 — & (与运算)、|(或运算)、^(异或运算)的本质理解
位与运算符(&)参加运算的俩个数据,按二进制位进行"与"运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;即:俩位同时为"1", 结果才为“1”, 否则为0例如:3&原创 2018-10-06 12:02:43 · 2114 阅读 · 0 评论 -
图的遍历之深度优先搜索和广度优先搜索
1.深度优先搜索1.1深度优先搜索介绍图的深度优先搜索(Depth First Search, DFS):假设初始状态是图中所有顶点均为被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作为起始点,重复上述过程,直至图中所有顶点都被访问到。1....转载 2018-10-28 11:52:29 · 1028 阅读 · 0 评论 -
二叉搜索树—平衡二叉树
1. 二叉搜索树的基本概念一棵二叉搜索树是以一棵二叉树来组织的,如下图所示,这样一棵可以使用一个链表数据结构来表示,其中每个结点就是一个对象。key、left、right、p分别指向结点的键值、左孩子、右孩子和双亲。如果某个孩子节点或者父节点不存在,则相应属性值为NIL。根节点是树中唯一父指针为NIL的节点。(1)遍历关键字 通过递归算法来按序输出二叉树中的所有关键字,这种算法称为中序遍历(ino原创 2017-10-11 19:05:24 · 989 阅读 · 0 评论 -
LeetCode 690 559 872 员工的重要性 N叉树的最大深度 叶子相似的树 (DFS)
1.员工的重要性难度:简单给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此...原创 2018-10-28 13:41:36 · 320 阅读 · 0 评论 -
LeetCode 101 100 对称二叉树 相同的树(树 深度优先搜索)
难度:简单给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这...原创 2018-10-28 16:55:05 · 411 阅读 · 0 评论 -
LeetCode 208 实现前缀树
难度:中等问题描述:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsW...原创 2018-11-06 13:12:49 · 637 阅读 · 0 评论