剑指offer
文章平均质量分 68
记忆力不好
这个作者很懒,什么都没留下…
展开
-
剑指offer:调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。这道题如果要求不用奇数和奇数,偶是和偶数位置相对稳定,用双指针,一前一后相互交换: public void reOrderArray(int [] array) { int low原创 2016-05-01 22:37:21 · 629 阅读 · 0 评论 -
【面试编程题】-10剑指offer之面试中的各项能力
下面的例题来自于剑指offer的第6章的内容,主要考察面试者在面试过程当中的沟通、学习等方面的能力1.数字在排序数组中出现的次数题目描述 统计一个数字在排序数组中出现的次数。思路: 在排序数组当中查找用二分法,分别查找到数的起始位置和结束位置。时间复杂度是(logn)。public class Solution { public int GetNumberOfK(int []原创 2016-08-05 15:42:05 · 1375 阅读 · 0 评论 -
【面试编程题】7-剑指offer之高质量的代码
下面的题来着剑指offer第3章 高质量的代码。题目比较简单,主要考察的是代码的完整性,代码的鲁棒性。1、数值的整数次方,数值的幂题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路: 采用暴力算法,n次幂就乘以n次,时间复杂度太高; 应该采用分治的思想,但要注意负数次幂的情况。public class原创 2016-07-20 23:10:13 · 1007 阅读 · 0 评论 -
【面试编程题】-8剑指offer之解决面试题的思路
下面的例题来着剑指offer第4章的,主要是告诉大家,做面试题的时候,怎么找到思路。画图让抽象问题形象化 不少于数据结构相关的问题,如二叉树、二维数组、链表等问题,都可以采用画图的方式来分析,找到题目隐含的规律和特点。1.二叉树的镜像 题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \原创 2016-07-27 22:38:22 · 1637 阅读 · 0 评论 -
【面试编程题】6-动态规划类题
下面的例题来自剑指offer,都是使用动态规划代替递归避免重复求解的例子。1.斐波那契数列题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39思路:斐波拉数列f(n)=f(n-1)+f(n-2);如果使用递归,会造成很多重复求解,所以使用使用动态规划,斐波拉数列是非常典型的使用动态规划求解的例子。public class Solution {原创 2016-07-19 20:24:52 · 2464 阅读 · 0 评论 -
【面试编程题】3-二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路 类似于从一维数组中查找利用二分法,根据题意此题的起始点应该是二位数组的右上角。如果该位置的数等于target,返回true;如果该位置的数大于target,只有左边的列有可能;如果该位置的数小于target,只原创 2016-07-19 13:35:35 · 829 阅读 · 0 评论 -
【面试编程题】5-旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路: 直接一次遍历找出最小值得时间复杂度是n,但是没有利用旋转数组是部分有序的性质; 在有序的原创 2016-07-19 16:26:11 · 838 阅读 · 0 评论 -
【面试编程题】4:从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头思路:如果反转链表,会破坏链表原来的结果。所以利用数据结果栈。import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList原创 2016-07-19 14:25:04 · 675 阅读 · 0 评论 -
【每天一道剑指offer】2:矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b占据了矩原创 2016-06-21 20:20:59 · 547 阅读 · 0 评论 -
【每天一道剑指offer】1:机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题思路 像这种在矩阵之中找路径,一般都是用回溯原创 2016-06-21 14:47:51 · 884 阅读 · 1 评论 -
剑指Offer:树的层次遍历,分层打印和按之字型打印
1.把二叉树打印成多行题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。如:12,33,4,5解题:层次遍历使用队列,这里维护两个队列进行的区分cur,next,分别存储当前行节点和下一行节点,遍历完当前行cur后,两个队列再进行交换。 ArrayList > Print(TreeNode pRoot) { Ar原创 2016-04-28 21:36:56 · 3261 阅读 · 0 评论 -
【面试编程题】-9剑指offer之优化时间和空间效率
下面的例题来着剑指offer第5章的内容。很多公司的面试官都把代码的时间效率当做一个考叉重点。面试官除了考查应聘者的编程能力之外,还关注应聘者有没有不断优化效率、追求完美的态度和能力。1.数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半原创 2016-07-30 13:51:18 · 1312 阅读 · 0 评论