数据结构与算法
qq_24699905
这个作者很懒,什么都没留下…
展开
-
数据结构与算法每日一练---3:如何在一次传递中找到长度未知的单链表的中间元素?
问题准备知识:链表有三种:单向、双向、循环。对于一个单链表,只能从链表的一段开始遍历,对于双链表,可以两端同时开始。问题:如何在一次传递中找到长度未知的单链表的中间元素?链表中间元素含义:索引为最中间值得哪个元素,奇数为最中间,偶数有两个。一次传递:一次遍历。开始思考这个问题时候这样想的:中间元素也就是索引值是整个链表长度的一半,那么必然知道索引长度才能确定中间索引的值,毕竟中间索引值...原创 2019-01-10 22:18:37 · 421 阅读 · 0 评论 -
数据结构与算法每日一练---3荷兰旗问题
问题描述:给定一个数组arr,长度已知,指定某个数num.要求将数组重新组织整理成:等于num的值在数组中间,小于num在其左边,大于num的在其右边。同时要求:时间复杂度:不大于O(N),空间复杂度为O(1)。该题看起来和快排很像:就是用指定的数作为边界划分两组小于它的集合与大于它的集合。快排的思路是在数组中取得某个索引号已知,该索引上值也已知,然后用该数从后往前,从前往后逐渐比较大...原创 2019-01-17 11:00:39 · 216 阅读 · 0 评论 -
数据结构与算法每日一练---4快排
如何使用快速排序算法对整数数组进行排序?思路:就是手写快排。快排原理:是冒泡排序的升级版,过程是选定数组第一个数,依次从数组末尾与之比较,若比...原创 2019-01-17 11:47:33 · 252 阅读 · 0 评论 -
数据结构与算法每日一练---1
问题1:给定一个数值,如何搜索整数数组中加和为该数值的成对元素?容易理解实例:指定数为88,求一个长度为100整型数组中两数之和为88所有情况并列出来,数组中整数取值范围[1,100].思路1:循环从数组中找到两个索引不同数相加后与88比较;时间复杂度O(nCr(100,2));思路2:通过数学知识分析,88由两正整数相加情况本身只有44种情况:1+…2+…3+……43+45...原创 2019-01-02 21:03:45 · 248 阅读 · 0 评论 -
数据结构与算法每日一练---2:如何使用 Java 反转一个数组?
如何使用 Java 反转一个数组?反转数组就是讲原先数据的顺序反过来,再放回原先数组中。可以在不额外占用内存空间的情况下进行,思路是对换数组中对称位置的数。@testpublic void reverseArray(int[] array){ int temp = 0 ,temp2 = 0; for(int i = 0; i< array.length/2 ; i++ ){ ...原创 2019-01-07 22:55:08 · 185 阅读 · 0 评论 -
如何向小学生解释KMP算法的原理?
啊原创 2019-01-16 21:01:50 · 245 阅读 · 0 评论