数据结构与算法
文章平均质量分 68
u013586251
这个作者很懒,什么都没留下…
展开
-
二叉树的锯齿形层次遍历
给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 返回其锯齿形的层次遍历为: [ [3], [20,9], [15,7] ] #include #include #include u原创 2016-04-20 17:04:15 · 268 阅读 · 0 评论 -
lintcode 160 寻找旋转排序数组中的最小值 II
假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 数组中可能存在重复的元素。 样例 给出[4,4,5,6,7,0,1,2] 返回 0 解析:这个题目我们可以使用二分法的思想去解决,因为数组是有序的(分开的两部分) #include #include usin原创 2016-04-28 20:24:04 · 223 阅读 · 0 评论 -
中序遍历和后序遍历树构造二叉树
#include #include using namespace std; //Definition of TreeNode : class TreeNode { public: int val; TreeNode *left, *right; TreeNode(int val) { this->val = val; this->left = this->right =原创 2016-04-12 20:40:54 · 152 阅读 · 0 评论 -
前序遍历和中序遍历树构造二叉树
代码1: #include #include using namespace std; //Definition of TreeNode : class TreeNode { public: int val; TreeNode *left, *right; TreeNode(int val) { this->val = val; this->left = this->ri原创 2016-04-12 20:05:32 · 204 阅读 · 0 评论 -
旋转链表
给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数 样例 给出链表1->2->3->4->5->null和k=2 返回4->5->1->2->3->null #include using namespace std; //Definition for singly-linked list. struct ListNode { int v原创 2016-04-04 14:44:42 · 152 阅读 · 0 评论 -
删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素每个元素只留下一个。 样例 给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3->3->null,返回 1->2->3->null #include using namespace std; //Definition of ListNode class ListNode { p原创 2016-04-04 14:43:33 · 187 阅读 · 0 评论 -
哈希函数
在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如: hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d)) % HASH原创 2016-03-08 21:32:12 · 156 阅读 · 0 评论 -
完全二叉树节点数
给定一棵完全二叉树的头节点head,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。 #include using namespace std; class TreeNode { public: int val; TreeNode* left; TreeNode* right; TreeNode(int val) :val(val),原创 2016-03-08 00:08:18 · 294 阅读 · 0 评论 -
最近公共祖先
给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 4 / \ 3 7 / \ 5 6 LCA(3, 5) = 4 LCA(5, 6) = 7 LCA(6, 7) = 7 解法是:顺着一条p和q都同在一边的链子,也就是说,若P和原创 2016-03-05 16:12:32 · 177 阅读 · 0 评论 -
lintcode 144交错正负数
给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。 给出数组[-1, -2, -3, 4, 5, 6],重新排序之后,变成[-1, 5, -2, 4, -3, 6]或者其他任何满足要求的答案 #include #include #include #include using namespace std; class Solution { public:原创 2016-04-24 23:25:19 · 437 阅读 · 0 评论