符号表的实现有很多方式,下面介绍其中的几种。 乱序(未排序)数组实现 这种情况,不需要改变数组,操作就在这个数组上执行。在最坏的情况下插入,搜索,删除时间复杂度为O(n)。 有序(已排序)数组实现 这种情况我们就有了排序好的关键字和相应的值。 通过关键字在数组中存储 keys[i]为第i位大的key...
分类:
其他好文 时间:
2015-08-14 13:24:56
阅读次数:
145
class Program { /// /// 数组排序 /// /// 数组 /// true为从小到大排列 false为从大到小排列 /// 排序完的数组 static int[] Me...
分类:
编程语言 时间:
2015-08-13 11:51:43
阅读次数:
142
题目:输入两个递增排序的链表,合并这两个链表,并使新链表中的结点仍然是按照递增排序的。
第一种思维:合并两个排序的链表,类似于合并两个排序数组,所不同的仅是一个用链表保存数据,一个用数组保存数据。
算法如下:(下面的算法前提是:头结点 不是 链表的第一个数据节点。)
/**方法一:合并两个排序链表,使用了新创建的链表来保存,没有改动两个原始链表*/
ListNode *merge_tow...
分类:
编程语言 时间:
2015-08-11 01:31:00
阅读次数:
176
【108-Convert Sorted Array to Binary Search Tree(排序数组转变为平衡二叉树)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
题目...
分类:
编程语言 时间:
2015-08-10 08:15:28
阅读次数:
136
题目:在排序数组中,找出给定数字出现的次数思路:既然出现排序数组,很容易想到二分查找,时间复杂度为O(logn);先通过二分查找找到最左边出现该数字的下标left(如果没找到,则返回-1),然后通过二分查找找到最右边出现该数字的下表right(如果没找到,则返回-1),然后right-left+1就...
分类:
编程语言 时间:
2015-08-09 18:30:49
阅读次数:
114
讲解字典类,集合类,数组、字典、集合的快速遍历,数组排序,数组元素按照数值大小排序等知识点。...
分类:
编程语言 时间:
2015-08-09 17:15:55
阅读次数:
153
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
思路:此题与排序数组很大的不同是链表不知道长度以及上面的值。其整体思路还是中间值作为根节点,但是需要一点策略,不然就会超时。
先整体遍历长度之后,将长度保存,这样就不需要每...
分类:
编程语言 时间:
2015-08-05 15:00:53
阅读次数:
146
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:将排序数组转换为高度平衡的二叉搜索树。思想是将中间的值作为根节点,然后左右的数组分别为左右子树。递归求解。
代码如下:
/**
* Definition for a binary tre...
分类:
编程语言 时间:
2015-08-05 14:59:13
阅读次数:
173
【088-Merge Sorted Array(合并排序数组)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1...
分类:
编程语言 时间:
2015-08-05 07:46:52
阅读次数:
149
基础知识 二分非递归写法: int binary_search(const int a[], const int size, const int val) { int lower = 0; int upper = size-1; /* invariant: if a[i]==val for any ...
分类:
编程语言 时间:
2015-08-04 20:54:22
阅读次数:
178