数据结构与算法
swings_ss
C++后台、计算机视觉
展开
-
[leetcode]minimum-depth-of-binary-tree
题目描述Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.解法递归方式:很容易理解,直接上代码class Solution...原创 2019-01-27 00:32:23 · 103 阅读 · 0 评论 -
[leetcode]merge-k-sorted-lists
题目描述Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.解法合并k个有序链表的解法与合并两个有序链表的解法类似先构造一个dummy结点,并把dummy赋值给cur,在循环中选择k个链表中值最小的头结点,使得cur的next指向最小的头结点,并...原创 2019-03-27 22:33:15 · 153 阅读 · 0 评论 -
[leetcode]swap-nodes-in-pairs
题目描述Given a linked list, swap every two adjacent nodes and return its head.For example,Given1->2->3->4, you should return the list as2->1->4->3.Your algorithm should use only con...原创 2019-04-04 23:18:37 · 199 阅读 · 0 评论 -
[leetcode]4 sum
题目描述Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.解法解法和2sum、3sum问题...原创 2019-03-25 21:49:02 · 294 阅读 · 0 评论 -
判断一棵树是不是平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解法最直观的想法是从根节点开始遍历,对每个节点求其左右子树高度,若左右子树高度差大于1,则返回false;否则以递归的方式处理其左子节点和右子节点class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot == n...原创 2019-03-13 22:15:20 · 181 阅读 · 0 评论 -
合并两个有序链表的递归和非递归实现
递归实现ListNode* mergeList(ListNode* head1, ListNode* head2){ if(head1 == nullptr) return head2; else if(head2 == nullptr) return head1; ListNode* res = nullptr; if(head1 -> val < head2...原创 2019-03-05 11:30:36 · 456 阅读 · 0 评论 -
[leetcode]construct-binary-tree-from-inorder-and-postorder-traversal
题目描述Given inorder and postorder traversal of a tree, construct the binary tree.Note:You may assume that duplicates do not exist in the tree.解法找到根节点,递归构造左子树和右子树使用std::find使得程序更简洁代码实现/** * De...原创 2019-02-10 23:33:50 · 108 阅读 · 0 评论 -
[leecode]max-points-on-a-line
题目描述Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.解法使用两层循环,对于每一个点,遍历其它点,计算当前点与其它点的斜率,斜率相同即说明共线需要注意的是垂直共线和重合的点不能计算斜率,因此我们把其它点分为三类垂直共线的(不包含重合点...原创 2019-01-30 00:58:01 · 115 阅读 · 0 评论 -
[leetcode]binary-tree-postorder-traversal
题目描述Given a binary tree, return the postorder traversal of its nodes’ values.解法这道题是二叉树后序遍历的非递归实现先观察递归实现/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *le...原创 2019-02-02 00:01:10 · 76 阅读 · 0 评论 -
libevent中的尾队列
一、前言在 libevent 源码中,包括 注册事件队列(eventqueue) 和 激活事件队列(activequeues) 在内的很多地方都用到了 尾队列 这种数据结构。而 尾队列 的实现有点复杂,因此写一篇博客分析一下~二、相关结构体2.1 Entry结构体libevent 中尾队列的 Entry(即尾队列元素) 结构体定义如下:#define TAILQ_ENTRY(type) ...原创 2019-06-11 22:10:53 · 644 阅读 · 1 评论