
数据结构
文章平均质量分 51
shuiziliu1025
这个作者很懒,什么都没留下…
展开
-
找出N个元素的数组中最大的K个数
题目: 给出 N 个整数(N可能很大,以致无法装入内存),找出前 K 个最大的整数【解法一】如果 N 的数量不是很大,例如在几千个左右,则在这种情况下,那我们就先排序一下,这里快速排序或者推排序都是很好的解决方案,平均时间复杂度为 O(N * log2N)。然后取出前 K 个,O(K)。总共时间复杂度 O(N * log2N)+ O(K) = O(N * log2N)。当 K =原创 2016-03-22 21:18:19 · 7201 阅读 · 1 评论 -
相邻元素差的绝对值都是1,在这样的数组中找目标元素
今天看到这样一个题目:有一个数组 A, 大小为 n, 相邻元素差的绝对值都是1。 如: A={4,5,6,5,6,7,8,9,10,9},现给定 A和目标整数 t,找出 t 在 A 中的位置。类似题目还有:有一个 int 型数组,每两个相邻元素之间的差值不是 1 就是 -1,给定一个数,找出这个数在该数组中的位置。【解法一】对这个数组进行遍历,复杂度为 O(n)。如果数组长度很原创 2016-03-23 19:13:51 · 1280 阅读 · 0 评论 -
判断一个单向链表是否有环
方法一:设置两个指针pre,last,慢的跳一步,快的跳两步,往链表末端方向移动,当慢的指针追赶上快的指针的时候说明单向链表有环。node *pre = head;node *last = head;while(pre! = NULL && last != NULL){ pre = pre->next->next; last = pre->next; if(pre原创 2016-07-29 18:46:44 · 502 阅读 · 0 评论 -
单链表的反转-Java实现
public class Node { public int data; public Node next; public Node(int data){ this.data = data; this.next = null; }}public class LinkedList { private Node root; public void insert(int dat原创 2016-09-12 10:35:16 · 442 阅读 · 0 评论 -
设计一个最优算法来查找n个元素数组中的最大值和最小值
把数组两两一对分组,如果数组元素个数为奇数,就最后单独分一个,然后分别对每一组的两个数比较,把小的放在左边,大的放在右边,这样遍历下来,总共比较的次数是 N/2 次;在前面分组的基础上,那么可以得到结论,最小值一定在每一组的左边部分找,最大值一定在数组的右边部分找,最大值和最小值的查找分别需要比较N/2 次和N/2 次;这样就可以找到最大值和最小值了,比较的次数为N/2 * 3 = (3N原创 2016-03-22 20:37:43 · 12022 阅读 · 0 评论 -
实现一个函数,将字符串中的空格替换成"%20"
请实现一个函数,将字符串中的每个空格替换成"%20",例如输入"We are happy.",则输出"We%20are%20happy."public class test { public static void main(String[] args) { String str = "We are happy."; char[] ch = str.toCharA原创 2016-10-10 11:14:23 · 1528 阅读 · 0 评论 -
两个有序数组合并成一个有序数组
public static int[] merge(int[]a,int[] b){ int [] res = new int[a.length+b.length]; int i=0,j=0,k=0; while(i<a.length&&j<b.length){ if(a[i]<=b[j]){ res[k] = a[i]; i++;k++; }else原创 2016-09-12 11:00:59 · 524 阅读 · 0 评论