算法
yansj_sc
种一棵树的最佳时机是十年前,其次是现在。
展开
-
【leetcode】罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做...原创 2018-07-08 12:58:56 · 324 阅读 · 0 评论 -
【leetcode】递增的三元子序列
问题描述:给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例...原创 2018-08-11 10:08:04 · 464 阅读 · 0 评论 -
【leetcode】最长回文子串
问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路:参考这篇文章加深了对动态规划算法的了解和使用:https://www.cnblogs.com/coderJiebao/p/A...原创 2018-08-11 14:38:12 · 154 阅读 · 0 评论 -
【leetcode】相交链表
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。 注意:如果两个链表没...原创 2018-08-14 22:57:33 · 167 阅读 · 0 评论 -
【leetcode】无重复字符的最长子串
问题描述:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。解题思原创 2018-08-07 23:39:07 · 164 阅读 · 0 评论 -
【leetcode】中序遍历二叉树
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路:先用递归的思路写一个代码如下:/** * Definition for a binary tree node. * struct TreeNode {...原创 2018-08-15 23:48:13 · 377 阅读 · 0 评论 -
【leetcode】二叉树的锯齿形层次遍历
问题描述:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]解题思路:...原创 2018-08-18 13:12:28 · 649 阅读 · 0 评论 -
【leetcode】奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...原创 2018-08-13 22:14:38 · 365 阅读 · 0 评论 -
【leetcode】从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 解题思路:1、首先需要了解前序遍历和中序遍历的特征,前序遍历...原创 2018-08-18 23:52:36 · 1441 阅读 · 0 评论 -
【leetcode】三数之和
题目描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]提交...原创 2018-07-29 15:35:32 · 398 阅读 · 0 评论 -
【leetcode】缺失数字
问题描述给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?提交代码思路:连续整数,先计算出所有数字的和,然后在逐一减去数组中的数字,剩下的就是缺失的那个...原创 2018-07-14 14:49:07 · 374 阅读 · 0 评论 -
【leetcode】有效的括号
题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输...原创 2018-07-13 22:28:14 · 287 阅读 · 0 评论 -
【leetcode】 位1的个数
题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 00000000000000000000000010000000以前了解过这...原创 2018-07-08 22:09:35 · 245 阅读 · 0 评论 -
【leetcode】最小栈
题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);min...原创 2018-07-02 22:56:56 · 451 阅读 · 0 评论 -
【leetcode】汉明距离
问题描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。解题思路:先计算xy的异或,然后再计算异或...原创 2018-07-09 22:36:54 · 402 阅读 · 0 评论 -
【leetcode】将有序数组转换为二叉搜索树
题目描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...原创 2018-07-16 22:51:40 · 580 阅读 · 0 评论 -
【leetcode】Fizz Buzz
问题描述写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "原创 2018-07-03 23:29:41 · 253 阅读 · 0 评论 -
【leetcode】帕斯卡三角形
问题描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]提交代码思路:观察每行与前一行的关系,可以发现后一行比前一行多1个数字,并且位置关系也是明确的,并且是一个对称的数组。提...原创 2018-07-11 20:51:57 · 747 阅读 · 0 评论 -
【leetcode】计数质数
题目描述统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。提交代码如下:代码思路:如果借助辅助空间,代码提交会超时。因此代码中开辟了一个与n大小相同的数组来标识数组下标的数字是否是质数。因为非质数一定可以标示为所有质数的乘积,即n=(a1^n1)*(a2^n2)*...,n为非负整数,因此判断是否是...原创 2018-07-05 23:00:57 · 816 阅读 · 0 评论 -
【leetcode】3的幂
问题描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false提交代码思路:递归判断n/3是否是3的幂次方,提交代码如下:bool isPowerOfThree(int n) { if(n==1) { re...原创 2018-07-06 21:25:14 · 2434 阅读 · 0 评论 -
【leetcode】子集(动态规划解法)
问题描述:给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]解题思路:动态规划思路:自上而下分析(问题分解),自下而上解决(根据子问...原创 2019-03-05 13:07:50 · 759 阅读 · 0 评论