数据结构
小清新嘻嘻无敌
这个作者很懒,什么都没留下…
展开
-
快速排序Quicksort
快速排序 原理: 快速排序使用分治策略把一个序列根据轴点(pivot)分成两个子序列。步骤为: 1 从序列中挑出一个元素,作为轴点pivot。 2 把所有比轴点小的放在左序列,比轴点大的放在右序列(partition操作)。 3 对每个分区递归地进行步骤1-3,递归的结束条件是序列大小小于2。 整个问题的关键在于如何根据轴点进行partition操作。 复杂度分析 最坏情况时间复杂度原创 2017-05-02 16:43:00 · 217 阅读 · 0 评论 -
从上往下打印出二叉树的每个节点,同层节点从左至右打印(剑指offer,面试题32)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。题目思路:采用一个例子说明:8,6,10,5,7,9,11.对于第一层,只有根节点 “8”,第二层有节点“6”和“10”。从根节点分析,为了能够接下来打印节点为8的两个子节点,我们应该在遍历到该节点时把值为6 和 10 的两个节点保存到一个容器里。按照从左向右打印的要求,取出6,保存其两个子节点“5”和“7”原创 2017-07-18 11:36:14 · 3078 阅读 · 0 评论 -
链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。分析如下:设有两个指针,慢指针为slow,每次向后移动一位。 快指针为fast,每次向后移动两位。a为AC段的长度,c为环的周长。蓝色部分CB段长度为 d.则慢指针在相遇时走的长度为len_slow = a + m * c + d;快指针在相遇时走的长度为 len_fast = a +原创 2017-07-21 17:39:54 · 196 阅读 · 0 评论 -
数字在排序数组中出现的次数(剑指offer面试题56)
题目描述统计一个数字在排序数组中出现的次数。题目思路:1)常规思路:对该数字在数组中遍历,计数出现次数2)改进:既然是一个排序数组,很自然就可以想到二分查找。用二分查找分别定位数字k在数组中第一次出现和最后一次出现的位置。(1)为了获得数字k最后一次出现的位置,我们可以将数组中所有小于等于k的都归为左边部分,left = mid + 1,指向第一个大于k的位置。原创 2017-07-20 01:38:10 · 318 阅读 · 0 评论 -
二叉树先序、中序和后序遍历
转载自 http://blog.csdn.net/quzhongxin/article/details/46315251Binary Tree Preorder Traversal:https://leetcode.com/problems/binary-tree-preorder-traversal/ Binary Tree Inorder Traversal :http转载 2017-07-25 16:49:24 · 307 阅读 · 0 评论