- 博客(37)
- 收藏
- 关注
原创 搜狐笔试题记录(以后要把考过的题记下来,万一再考一遍呢,自己却忘了!!!)
import pandas as pdif __name__ == '__main__': # 搜狐数据 raw_data = {'platform': ['pcnews', 'pcnews', 'pcnews', 'pcnews', 'news', 'news', 'news', 'news', 'video', 'video', 'video', 'video'], 'order_num': ['1st', '1st', '2nd', '2nd', '1s...
2021-06-09 14:25:14
169
2
原创 lintcode 排序总结
排序总结 其实排序这部分的题做的时候是比较容易,因为自己都使用的sort 函数解决了一些问题,根本就没用到课本上新学的知识点,想用课本上新学的知识点去解决问题,但是自己耗时过很多还是没能解决,就把很多问题用的sort 函数解决。排序中大多数题都不难,自己想想就能找到思路,解决自己的困难。但是在合并区间问题上我耗时太多,而且最后也没有把自己的程序调通,还是问的舍友,还
2017-06-10 00:25:01
325
原创 lintcode 合并区间
1:问题描述 给出若干闭合区间,合并所有重叠的部分。样例给出的区间列表 => 合并后的区间列表:[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18]
2017-06-10 00:15:24
352
原创 lintcde80 中位数
1 问题描述 给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。2 解题思路 这个题思路很简单,就是先将数组排序,然后得到数组的长度,然后返回在一半长度的值即可,奇数偶数的处理方法不同。3 解题代码class Solution {public: /*
2017-06-02 22:26:35
270
原创 lintcode 56 两数之和
1 问题描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。样例给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].2 解题
2017-06-02 22:18:30
252
原创 lintcode 547两数组的交 lintcode 548两数组的交II
1 问题描述 547 两数组的交 返回两数组的交 样例: nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2] 548 两数组的交II 计算两个数组的交 样例 nums1 = [1, 2, 2, 1], nu
2017-06-02 21:26:18
299
原创 lintcode 463整数排序 lintcode 464整数排序II
1 问题描述 整数排序和整数排序II的要求一样,给一组数据将其用升序排列,唯一的不同要求就是在时间上有区别,整数排序用 O(n2),整数排序II用 O(n log n)的时间复杂度2 解题思路 这两道题我都用的很简单方法,都用的sort函数。3 解题代码整数排序 class Solution {public: /**
2017-06-02 21:11:38
376
原创 二叉查找树总结
总结自从结束上一个专题之后,自己变得十分懒散,不想刷题,对于一些简单题,而且自己积累了一定的经验,就会很容易的想到思路,然后就将他调通,当然这时候自己是很高兴的,但是还是有大多数的题自己都能够写到一定程度,但是对于将他完整的调过对自己还是很有难度,这时候自己就会去搜搜答案,读读别人的代码,然后将自己进行修改,试着将它调通,对于一些一直调不过的就会将它先放着。最后实在不行就百度搜答案,这对我来说
2017-05-18 23:23:41
277
原创 lintcode Convert BST to Greater Tree
1:问题描述刷新一棵树,每个节点的值等于所有比他大的节点值之和加上她本身。Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all key
2017-05-18 22:49:04
394
原创 lintcode 在二叉查找树中插入节点
1问题描述:给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 --> 1 4 / / \ 3
2017-05-18 18:00:26
244
原创 lintcode 二叉树的所有路径
1:问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]2:解题思路: 根据前序遍历的思路,将从根结点到每一个叶子结点的路径全都插入到向量中去。3:解题代码:
2017-04-21 20:35:10
617
原创 lintcode 二叉树总结
总结 写了将近两个星期的二叉树终于写完了,感觉这次做得很不好,刚开始这个专题的时候自己很努力在做,前面的几个题自己把握的还行,但是自从上星期开始 自己有的就是写了一部分就写不下去了,调试也不过的时候,自己也没动太多脑子思考,然后就在网上找了答案,经过了修正,然后就提交了,过了就写博客,自己这样根本就没从题中真正学到东西。很多我并没有真正用心去做,这样做只会很浪费时间,自己并没有学到很多东
2017-04-20 23:10:15
354
原创 lintcode 把排序数组转换为高度最小的二叉搜索树
1:问题描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 72:解题思路:将数组二分,将中间的值作为根节点,前面的作为左子树,后面的作为右子树,之后调用递归解决问题。3:解题代码:/**
2017-04-20 17:19:01
463
原创 Lintcode 子树
1:问题描述:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。2:解题思路:先写一个比较函数,用来比较两棵树
2017-04-20 16:15:00
307
原创 lintcode 翻转二叉树
1:问题描述 翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 42:解题思路:将左右子树翻转之后,再将子树的子树翻转。3:解题代码/** * Definition of TreeNode: * class TreeNode { * pu
2017-04-13 16:59:17
1254
原创 Lintcode 克隆二叉树
1:问题描述深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 52:解题思路 创建一个根节点,将原来的二叉树的根的值赋给他,然后在通过遍历,创造和
2017-04-13 16:57:44
359
原创 lintcode 将二叉树拆成链表
1:问题描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的next 指针。样例 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6
2017-04-12 20:46:16
395
原创 Lintcode 等价二叉树
1:问题描述检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1
2017-04-12 20:22:26
475
原创 lintcode 二叉树的最大节点
1:问题描述:在二叉树中寻找值最大的节点并返回2:思路:用中间结点保存每一次递归时比较的取得最大值的节点。3:解题代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int
2017-04-09 00:32:45
1312
原创 lintcode 二叉树的层次遍历
1:问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)2:解题思路:将每一层的数据存到队列里面去,用递归的方法访问,层次依次增加。3:解题代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right;
2017-04-08 12:58:30
588
原创 lintcode 二叉树的后序遍历
1:问题描述:给出一棵二叉树,返回其节点值的后序遍历2:解题思路:用递归的方法后序遍历二叉树,存到vector里去,返回数组,得到二叉树的内容。3:解题代码: /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left,
2017-04-08 12:50:50
2515
原创 Lintcode 二叉树的中序遍历
1:问题描述:给出一棵二叉树,返回其节点值的中序遍历。样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 2:解题思路:用递归的方法中序遍历二叉树,存到vector里去,返回数组,得到二叉树的内容。3:解题代码: /** * Definition of TreeNode:
2017-04-08 00:17:26
220
原创 lintcode 二叉树的前序遍历
1:问题描述:给出一棵二叉树,返回其节点值的前序遍历。给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 2:解题思路:用递归的方法前序遍历二叉树,存到vector里去,返回数组,得到二叉树的内容。3:解题代码: /** * Definition of TreeNode: * class TreeN
2017-04-07 23:47:42
428
原创 lintcode 二叉树的最小深度
1:问题描述:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 22;解题思路:和求最大深度类似,用递归算法,但是比求最大深度复杂,还要考
2017-04-07 23:16:56
602
原创 lintcode 二叉树的最大深度
1:问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离哪家公司问你的这个题? Airbnb Alibaba Amazon Apple Baidu Bloomberg Cisco Dropbox Ebay Facebook Google Hulu Intel Linkedin Microsoft NetEase Nvid
2017-04-07 23:15:00
276
原创 lintcode链表专题总结
总结自己半个学期没写程序,感觉好多东西都已经忘得很多了,尤其是在大一上学期的时候,自己没有好好学习,自己的基础就很低,所以在开始写的时候就有很多基础的知识自己不通,问一个学数据结构的大哥,他让我自己好好复习复习以前的知识,我就在网上搜了一些学习内容,基本的知识自己差不多就搞懂了。自己做题的时候还是有差距,自己还是会看题但是没有任何的想法,不知道怎么写。刚开始的时候自己就是将老师在PPT讲过的改
2017-03-30 00:04:49
266
原创 Lintcode 173.链表插入排序
1.问题描述:用插入排序对链表排序2.思路:在链表中,将小的节点往前插,大就往后插,这样之后就可以把链表按大小顺序排好。。3.通过的代码:/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int
2017-03-29 23:13:44
675
1
原创 Lintcode 76.链表划分
1.问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序2.解题思路:先创建两个节点,从开始遍历链表判断节点的值与x的大小,分别存放将比x大和小的节点,最后将两个链表连起来。3./** * Definition of ListNode * class ListNode { * publi
2017-03-29 23:12:06
322
原创 Lintcode 165合并两个排序链表
1.问题描述:将两个排序链表合并为一个新的排序链表2.解题思路:遍历两个链表的公共长度,根据节点值得大小来改变每次节点的连接,然后判断那条链表还有剩余,最后将较长链表的剩余部分追加到节点的后面3.通过的代码:/** * Definition of ListNode * class ListNode { * public: * int val; * L
2017-03-28 23:15:02
679
原创 Lintcode167.链表求和C++
1.问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和2.解题思路:从两条链表的最开始节点一个个相加每的个节点只能存取3.通过的代码:/** * Definition for singly-linked list. * struct ListNode {
2017-03-28 22:04:36
1063
原创 Lintcode 166.链表倒数第n个节点
1.问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n2.解题思路:创建两个指向head的指针p q,让p遍历,p先开始移动,p走到第n-1个节点是,之后p q 一起往后移动,这时候当p指向最后一个节点的时候,q就指向了倒数第n个节点的位置,这时候返回q就可以了。3.通过的代码:/** * Definition of ListNode * class ListNo
2017-03-27 23:07:28
1015
原创 Lintcode 174.删除链表中倒数第n个节点
1.问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。2.解题思路:head先走了n步,这样head和temp之间差n个节点,之后head和temp一起往后移动,当head移动到了NULL的时候,temp移动到了倒数第n+1个节点的位置,之时候改变temp->next将他指向他的下一个节点的下一个节点,这样就是把倒数第n个节点给删掉了。3.通过的代码/** * D
2017-03-27 22:44:58
2734
1
原创 Lintcode 452.删除链表中的元素
1.问题描述:删除链表中等于给定值val的所有节点2.解题思路:创建一个头节点dummy,来保存第一个节点。然后将dummy附值给head,这样就从链表的第一的节点开始遍历,若head->next的值与val的值相等,则将head->next指向head->next->next;这样就可以删除节点。继续移动将head下移,删除整条链中存放val的节点。3.解决问题的代码/**
2017-03-25 23:44:42
874
原创 Lintcode 35.翻转链表
1.问题描述:翻转一个链表,将给定的链表按他相反的顺序表示。2.解题思路:相当于尾插法,创建dummy先保存了head的地址,将创建的temp保存head->next的地址,这样就让head下移,然后指回原来的地址,即使原来的链表断了,但还可以找到他的地址,就可以实现链表的翻转3.通过的代码: /** * Definition of ListNode * * class L
2017-03-25 23:37:39
1654
1
原创 Lintcode112.删除排序链表中的重复元素
1.问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个2.解决思路:判断当前节点temp和temp->next数据域存放的数据元素的关系,若两个节点的存放数据相同将 temp->next指向temp->next->next这样就可以删掉和temp存放相同元素的temp->next;若不同则temp往后移动,在进行判断。3.通过的代码/** * Definition o
2017-03-25 15:04:03
980
原创 Lintcode 451.两两交换链表中的节点
1.问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。2.思路:两两交换两个节点数据域所存放的数据元素3.通过的代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x
2017-03-25 13:08:41
906
1
原创 Lintcode 372.在O(1)时间复杂度里删除节点
1.问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在O(1)时间复杂度删除该链表节点。2.解题思路:已经给定了一个要删除的节点node,就用node的下一个节点来覆盖掉要删除的node。然后释放掉node以前的下一个节点的空间。3.通过的代码:/** * Definition of ListNode * class ListNode { * publi
2017-03-25 12:52:23
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人