LC
CoolSuperman
点滴积累,成就不凡
展开
-
缺失数字,回文数,宝石问题,有序数组的平方问题
1.缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8int missingNumber(int* nums, int numsSize) {}这道题并不是很难,我们这里说说一种常规解法和一种快速解法:...原创 2019-02-21 19:01:44 · 166 阅读 · 0 评论 -
链表的中间节点&移除链表元素
链表的中间节点给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, an...原创 2019-03-11 18:09:08 · 348 阅读 · 0 评论 -
606.根据二叉树创建字符串
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / &n...原创 2019-03-15 22:11:42 · 281 阅读 · 0 评论 -
371.不使用运算符 + 和 - 计算两整数 a b 之和
不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2;输出: 3示例 2:输入: a = -2, b = 3;输出: 1这里因为是求和,我们将整个过程分为两步来看:按位相加,如果两者相同位置都为1,向前进位,第一步我们可以使a^b,使得相加但不显示进位:3^5就是0011^0101得到0110恰好...原创 2019-03-16 22:18:23 · 370 阅读 · 0 评论 -
100.相同的树;101.对称二叉树;110.平衡二叉树;572.另一个数的子树
这里的四道题目都使用了递归的思想,从最底层开始判断相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 /  ...原创 2019-03-21 00:00:11 · 117 阅读 · 0 评论 -
DS:经典单链表题目-判断相交与带环,环入口节点,环长度问题详解
文章目录判断链表相交判断链表是否带环(要求时间复杂度为O(1))求链表带环时环的入口节点求环长度判断链表相交编写一个程序,找到两个单链表相交的起始节点。如下面的链表:在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。对,这里单链...原创 2019-03-12 23:10:27 · 178 阅读 · 0 评论 -
11. 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。垂直的两条线段将会与坐标轴构成一个矩形区域,较短线段的长度将会作为矩形区域的宽度,两线间距将会作为...原创 2019-03-24 23:56:05 · 106 阅读 · 0 评论 -
236.二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 ...原创 2019-03-18 23:10:29 · 109 阅读 · 0 评论 -
2.两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4);输出:7 -> 0 -> ...原创 2019-03-18 23:23:02 · 75 阅读 · 0 评论 -
AL:链表中的归并排序(148)
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4看到这个O(n*logn)的时间复杂度,常数级的空间复杂度,我第一反应是堆排序,但在链表进行堆排序要访问子树节点时,非常不好处理(结构体也不支持),我只能考虑快速和归并;归并排序:因为顺序表归并排序的空间复杂...原创 2019-03-22 23:30:01 · 123 阅读 · 0 评论 -
反转链表(两种实现)
反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL这道题目我们可以先创建一个新的表头,然后按正序每抓取到一个原链表的节点,就前插到这个新的链表里,最后我们就可以得到一个恰好为原链表反序的新链表:struc原创 2019-03-07 23:58:05 · 931 阅读 · 0 评论 -
24.两两交换链表中的节点
两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.这笔者先使用的是前插后插法,即创建一个新链表,首节点指向head,将链表节点两两分组,每组第一个尾插入新链表,第二个插在尾节点的前面;这样遍...原创 2019-03-19 21:27:33 · 144 阅读 · 0 评论 -
时间恒久远,汉诺塔永流传(C实现经典三柱汉诺塔)
还记得猩球崛起上威尔给凯撒的那个益智汉诺塔吗?我今天就百度了一下:法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片...原创 2019-02-16 19:50:29 · 448 阅读 · 0 评论 -
买卖股票的最佳时机II,合并两个有序数组,字符串第一个唯一字符查找问题
买卖股票的最佳时机II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4],输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时...原创 2019-02-27 22:27:16 · 120 阅读 · 0 评论 -
整数反转,判断2的次幂,求众数问题
整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123, 输出: 321示例 2:输入: -123,输出: -321示例 3:输入: 120, 输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。我们抓取num最低位(%1...原创 2019-02-23 22:00:05 · 108 阅读 · 0 评论 -
数组拆分I,数组形式的整数加法,种花问题
数组拆分I给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n 是正整数,范围在 [1, 10000].数...原创 2019-03-01 16:31:59 · 217 阅读 · 0 评论 -
爬台阶,Nim游戏,最大子序和问题
爬台阶假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶;2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶;1 阶 + 2 阶;2 阶 + 1 阶这个问...原创 2019-02-25 21:13:32 · 243 阅读 · 0 评论 -
验证回文串,两数之和II,移动零问题
两数之和II给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15],...原创 2019-03-02 17:50:26 · 113 阅读 · 0 评论 -
买卖股票的最佳时机I,删除排序数组重复项,有效括号判断问题
买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...原创 2019-02-26 16:56:00 · 156 阅读 · 0 评论 -
罗马数字转整数,最长公共前缀,二进制求和
文章目录罗马数字转整数最长公共前缀二进制求和罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为...原创 2019-03-05 21:16:13 · 230 阅读 · 0 评论 -
二叉树的前序|中序|后序遍历(144;94;145)
从图上来看如果我们想遍历一个二叉树,每个节点都要经历进来,中间,出去这三次前序遍历(进来)A-B-D-C-E-F递归思想(根->左->右)A根->B左–>C右B->D左->NULL右D->NULL左-&amp原创 2019-03-14 23:12:08 · 279 阅读 · 0 评论 -
671.二叉树中的第二小节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。这里笔者采用的思路非常简单,即遍历二叉树中的所有节点,同时设定两个变量分别存放最小的和倒数第二小的值,每次遍历时进行更新,全部遍历完后若是...原创 2019-03-28 23:28:52 · 168 阅读 · 0 评论