刷题
Yami程序圆
这个作者很懒,什么都没留下…
展开
-
调整数组顺序使奇数位于偶数前
剑指offer第12题:题目要求:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:题目要求进行重新排序;方法一:可以借鉴冒泡排序的思想,如果是偶数在奇数前就交换。但是复杂度是l(n^2)方法二:定义一个缓冲区即新建一个列表,定义两个指针一个是奇数一个...原创 2018-12-20 11:20:35 · 111 阅读 · 0 评论 -
剑指offer第六题
题目要求:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解答思路:将数组分为三类:(1)数组长度为0,返回0//返回值为0(2)数组长度不为0,且不全...原创 2018-12-17 11:16:57 · 135 阅读 · 0 评论 -
剑指offer20题:包含min函数的栈
题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。相关知识:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作...原创 2019-02-15 10:30:21 · 160 阅读 · 0 评论 -
入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
题目要求:入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:本题的本质即输出二叉搜索树的中序遍历,二叉搜索树的中序遍历就为一个排序好队列。因此目前的问题转化为:如何进行二叉搜索树的中序遍历,并将其转换为双链表分为三步:(1)找到最底层的左叶子节点,并作为双向链表的头节点。(2)对于不是头结点的点,调...原创 2019-04-16 15:08:47 · 514 阅读 · 2 评论