LintCode编程笔记
DeMonnnnnn
I decide what tide to bring. 我的命运,由我做主。
展开
-
斐波纳契数列的递归与非递归形式
题目查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... 注意事项The Nth fibonacci number won't exceed the max value of signed 32-bit intege原创 2017-08-08 17:52:34 · 635 阅读 · 0 评论 -
LintCode 子树
题目有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例:下面的例子中 T2 是 T1 的子树: 1 3原创 2017-08-28 10:57:24 · 406 阅读 · 0 评论 -
LintCode 合并两个排序链表
题目将两个排序链表合并为一个新的排序链表样例给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。思路如果两个链表任一为空,则返回另一个。如果都为空,直接返回空。定义一个新链表,用于存储合并后的链表。比较两个链表,把其中链表值较小的存入新链表中,链表后移。如果其中一个链表已经移到到链表末尾,则将另一个链表剩余的部分直接存原创 2017-08-28 10:19:36 · 411 阅读 · 0 评论 -
二进制中有多少个1?
题目计算在一个 32 位的整数的二进制表示中有多少个 1.您在真实的面试中是否遇到过这个题? Yes样例给定 32 (100000),返回 1给定 5 (101),返回 2给定 1023 (111111111),返回 10Java代码常规实现 根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇原创 2017-08-08 20:59:40 · 1038 阅读 · 0 评论 -
LintCode 前序遍历和中序遍历树构造二叉树
题目根据前序遍历和中序遍历树构造二叉树. 注意事项你可以假设树中不存在相同数值的节点样例给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \1 3树的遍历中序遍历:递归遍历当前节点的左子树—当前节点—右子树。后序遍历:递归遍历当前节点的左子树—右子树—当前节点。前序遍历:递归遍历当前节点的当前节点—左子树—右子树。广度优先遍历:逐层访问数的节点,然原创 2017-08-16 13:09:22 · 945 阅读 · 0 评论 -
LintCode 删除链表中倒数第n个节点
题目给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项链表中的节点个数大于等于n样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.//Definition for ListNode.public class ListNode { int val;//数据 ListNode n原创 2017-08-16 16:55:26 · 1577 阅读 · 0 评论 -
LintCode 最长回文串
题目给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。数据是大小写敏感的,也就是说,"Aa" 并不会被认为是一个回文串。 注意事项假设字符串的长度不会超过 1010。样例给出 s = "abccccdd" 返回 7一种可以构建出来的最长回文串方案是 "dccaccd"。思路先找出不同的字符。然后遍历每个不同字符有多少个。每个字符的个数/2(排除奇数个)相加的和再乘原创 2017-08-30 17:57:32 · 1363 阅读 · 0 评论 -
LintCode K个最近的点
题目给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点。按照距离由小到大返回。如果两个点有相同距离,则按照x值来排序;若x值也相同,就再按照y值排序。样例给出 points = [[4,6],[4,7],[4,4],[2,5],[1,1]], origin = [0, 0], k = 3返回 [[1,1],[2,5],[4,4]]坐标点类c原创 2017-09-04 15:14:01 · 2185 阅读 · 0 评论 -
LintCode 翻转链表
题目翻转一个链表样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null题目中默认的节点类 public class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; this.next = null;原创 2017-08-09 14:55:06 · 470 阅读 · 0 评论 -
LintCode 在O(1)时间复杂度删除链表节点
题目给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例Linked list is 1->2->3->4, and given node 3, delete the node in place 1->2->4分析知道当前的要删除节点的指针,直接将下个点的值复制到要删除的节点中。如果删除的是最后一个节点,直接置空即可。如下图: 代码 //D原创 2017-08-16 15:35:36 · 379 阅读 · 0 评论 -
LintCode 三角形计数
题目给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?样例例如,给定数组 S = {3,4,6,7},返回 3其中我们可以找到的三个三角形为:{3,4,6}{3,6,7}{4,6,7}给定数组 S = {4,4,4,4}, 返回 4其中我们可以找到的三个三角形为:{4(1),4(2),4(3)}{4(1),4(2),4(4)原创 2017-08-30 17:15:12 · 771 阅读 · 0 评论