随笔分类 -  算法编程

摘要:1、235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉 阅读全文
posted @ 2018-07-31 10:55 深度机器学习 阅读(1700) 评论(0) 推荐(0) 编辑
摘要:1、105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 返回如下的二叉树: 针对这道题,由于先序的顺序的第一个肯定是根,所以原二叉树的根节点可以知道,题目中给了一个很关键的条件就是树中没有相同元素,有了这个条件我们就 阅读全文
posted @ 2018-07-31 10:24 深度机器学习 阅读(236) 评论(0) 推荐(0) 编辑
摘要:玩树的题目,十有八九都是递归,而递归的核心就是不停的DFS到叶结点,然后在回溯回去。在递归函数中,当我们遇到叶结点的时候,即没有左右子结点,那么此时一条完整的路径已经形成了,我们加上当前的叶结点后存入结果res中,然后回溯。 1、112. 路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节 阅读全文
posted @ 2018-07-31 09:39 深度机器学习 阅读(3709) 评论(0) 推荐(0) 编辑
摘要:1、(剑指)操作给定的二叉树,将其变换为原二叉树的镜像。 2、100. 相同的树 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 示例 2: 示例 3: 3、101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的 阅读全文
posted @ 2018-07-30 17:06 深度机器学习 阅读(237) 评论(0) 推荐(0) 编辑
摘要:1、62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 我们需要用动态规划Dynamic Programming来解 阅读全文
posted @ 2018-07-28 15:01 深度机器学习 阅读(391) 评论(0) 推荐(0) 编辑
摘要:1、53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 2、300. 最长上升子序列 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 阅读全文
posted @ 2018-07-27 12:07 深度机器学习 阅读(243) 评论(0) 推荐(0) 编辑
摘要:1、287. 寻找重复数 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 示例 2: 说明: 方法一:改变了原来的数组,严格说不对 方法二:不改变原来数组的方法,二 阅读全文
posted @ 2018-07-24 17:37 深度机器学习 阅读(4645) 评论(0) 推荐(0) 编辑
摘要:1、845. 数组中的最长山脉 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.lengt 阅读全文
posted @ 2018-07-24 12:10 深度机器学习 阅读(326) 评论(0) 推荐(0) 编辑
摘要:1、349. 两个数组的交集 给定两个数组,写一个函数来计算它们的交集。 例子: 给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2]. 提示: 每个在结果中的元素必定是唯一的。 我们可以不考虑输出结果的顺序。 这道题让我们找两个数组交集的部分(不包含重复数字) 阅读全文
posted @ 2018-07-22 15:18 深度机器学习 阅读(314) 评论(0) 推荐(0) 编辑
摘要:1、154. 寻找旋转排序数组中的最小值 II 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 注意数组中可能存在重复的元素。 class Solution { publi 阅读全文
posted @ 2018-07-22 14:12 深度机器学习 阅读(310) 评论(0) 推荐(0) 编辑
摘要:1、128. 最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。方法1:这道题要求求最长连续序列,并给定了O 阅读全文
posted @ 2018-07-22 10:08 深度机器学习 阅读(276) 评论(0) 推荐(0) 编辑
摘要:1、77. 组合 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] class Solution { public: vecto 阅读全文
posted @ 2018-07-11 17:18 深度机器学习 阅读(289) 评论(0) 推荐(0) 编辑
摘要:1、78. 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 方法1:使用循环 我们可以一位一位的往上叠加,比如对于题目中给的例子[1,2,3]来说,最开始是空集,那么我们现在要处理1,就在空集上加1,为[1],现在我们有两个 阅读全文
posted @ 2018-07-10 11:48 深度机器学习 阅读(270) 评论(0) 推荐(0) 编辑
摘要:1、5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 示例 1: 示例 2: 回文字符串的子串也是回文,P[i][j](表示以i开始以j结束的子串)是回文字符串,那么P[i+1][j-1]也是回文字符串。该问题可以分解成一系列子问题。 定义状 阅读全文
posted @ 2018-07-05 15:01 深度机器学习 阅读(1524) 评论(0) 推荐(0) 编辑
摘要:1、9. 回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示 阅读全文
posted @ 2018-07-03 21:37 深度机器学习 阅读(278) 评论(0) 推荐(0) 编辑
摘要:1、141. 环形链表 给定一个链表,判断链表中是否有环。 2、142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 说明:不允许修改给定的链表。 方法一:(最简单) 设:链表头是X,环的第一个节点是Y,slow和fast第一次的交点是Z。各段的长 阅读全文
posted @ 2018-06-28 22:46 深度机器学习 阅读(220) 评论(0) 推荐(0) 编辑
摘要:1、21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4(1)非递归方法: /** * Definition for singly-linked 阅读全文
posted @ 2018-06-26 22:38 深度机器学习 阅读(290) 评论(0) 推荐(0) 编辑
摘要:1、238. 除自身以外数组的乘积 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。 方法1:使用两个数 阅读全文
posted @ 2018-06-26 22:14 深度机器学习 阅读(422) 评论(0) 推荐(0) 编辑
摘要:1、704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解 阅读全文
posted @ 2018-06-24 22:27 深度机器学习 阅读(574) 评论(0) 推荐(0) 编辑
摘要:1、2. 两数相加 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 阅读全文
posted @ 2018-06-24 21:54 深度机器学习 阅读(250) 评论(0) 推荐(0) 编辑