随笔分类 -  数据结构和算法

摘要:题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList,例如按照链表顺序,1->2->3->4->5->6->7->8,那么我们将得到{8,7,6,5,4,3,2,1}题目分析:对于单向链表我们知道,一个值与下一个值一一连接,而将值反向输出,我们可以用一个容器存起来,然后反向遍历输出结果,不过我们有一个更好的容器可以实现这一功能,那就是栈,栈具有先入后出的特点,所以我们将链表的值... 阅读全文
posted @ 2019-04-28 23:15 薛定谔的哈士奇 阅读(144) 评论(0) 推荐(0)
摘要:题目描述:输入一个正整数数组,把数组里面所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个,例如输入数组{3,32,321},输出的最小数字为321323题目分析:如果采用穷举法,把每一种可能都列举一遍,然后比较得到最小的一个字符串,那么将会有n的全排列个组合,也就是n的阶乘种情况,当n值很大时,时间复杂度是爆炸的,所以我们需要采用一种更小的方法,首先我们知道这样一个规律,对于字符串连... 阅读全文
posted @ 2019-04-09 21:22 薛定谔的哈士奇 阅读(119) 评论(0) 推荐(0)
摘要:题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变,例如{5,1,4,2,7,0,6,9},结果为{5,1,7,9,4,2,0,6} 题目分析: 题目要求分开奇数和偶数,还 阅读全文
posted @ 2019-04-05 17:11 薛定谔的哈士奇 阅读(135) 评论(0) 推荐(0)
摘要:题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内,数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次,请找出数组中任一个重复的数字,例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应输出的第一个重复的数字为2 题目分析: 如果我们采用两个 阅读全文
posted @ 2019-03-26 20:40 薛定谔的哈士奇 阅读(132) 评论(0) 推荐(0)
摘要:题目描述:输入n个整数,找出其中最小的k个数,例如,输入{4,5,1,6,2,7,3,8}这8个数字,最小的4个数字是1,2,3,4 题目分析:首先我能想到的是先对数组排序,从小到大,然后直接输出想要的最小的k个点,而根据排序算法,表现的比较好的快速排序时间复杂度为o(nlogn),但是有没有时间复 阅读全文
posted @ 2019-03-18 16:57 薛定谔的哈士奇 阅读(172) 评论(0) 推荐(1)
摘要:排序算法可以说是最基本的算法,希望通过自己再写一遍加强记忆。 一.冒泡排序 首先说下冒泡排序,因为排序过程很像气泡从水底一颗一颗冒出来,形象生动的叫冒泡排序,主要过程就是从头开始检索,一一比较,将比较的两者最大的放在后面,循环完毕排序结束。 举个例子:现有数组2,3,7,1,5,那么冒泡排序过程为: 阅读全文
posted @ 2019-03-14 11:05 薛定谔的哈士奇 阅读(157) 评论(0) 推荐(0)
摘要:在刷了几次算法题都发现了动态规划的影子,一时之间竟无从下手,遂去网上查各种资料,希望能够慢慢弄懂这个算法思想。 首先从最简单的台阶问题来看,有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法? 从题目来看,以小白的想法,每次走台阶都有两种选择,如果用step(i)表示每一步走的步数, 阅读全文
posted @ 2019-03-09 18:01 薛定谔的哈士奇 阅读(568) 评论(0) 推荐(0)