
剑指offer
交流学习分享剑指offer心得经验
Beat_Boxer
事在人为,唯有心静,方能突破
展开
-
【剑指offer】 --- 二叉树的层序遍历
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路 ①:该题为二叉树的层序遍历;需要借助一个队列,队列具有先进先出的特性; ②:在java中LinkedList实现了Deque接口,Deque<E> extends Queue<E>; ③: 队列的一些方法,进队(of...原创 2019-03-02 18:03:57 · 256 阅读 · 0 评论 -
【剑指offer】 --- 和为S的两个数
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 思路 由于是一个递增数组,所以我们可以采取两边向中间逼近的方式解决这个问题; ①:使用这个指针,一个i,一个j,i指向头,j指向尾; ②:如果a[i]+a[j]>S,那么就j--;...原创 2019-03-02 17:12:49 · 187 阅读 · 0 评论 -
【剑指offer】--- 判断一颗二叉树是否为平衡二叉树
了解平衡二叉树 首先,平衡二叉树,也叫平衡二叉搜索树,即AVL树;其具有以下特点: ①:它是一颗空树; ②:或者它的左右高度差不超过1,并且其左右两颗树都是平衡二叉树; ③:其高度一般都维持在O(log(n)),也就是其搜索时间复杂度; 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路 首先,可以根据其性质去判断,要满足其性...原创 2019-03-02 16:43:13 · 370 阅读 · 0 评论 -
【剑指offer】--- 合并两个已排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路 1.非递归式 ①:遍历两个链表,先比较两个链表,将值小的节点赋值给合成链表的head,并且让cur指针指上去; ②:继续遍历,进行cur指针的移动,拼接,如果有一个链表跑完,将另一个链表剩下直接挂...原创 2019-02-27 21:43:46 · 161 阅读 · 0 评论 -
【剑指offer】 --- 旋转数组中找最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 思考 一个非减排序数组旋转之后,将会变为两个非减排序子数组;前面的子数组的所有...原创 2019-02-27 12:28:55 · 248 阅读 · 0 评论 -
【剑指offer】--- 调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思考 首先,如果没有题目中的限制,那么,直接可以使用快速排序的思想,i从前面向后跑找一个奇数,j从后面向前跑找一个偶数,交换,直到i>j停止; 但是有此条件的限制,所以就要保证奇数和奇数之间的...原创 2019-02-26 17:25:02 · 153 阅读 · 0 评论