剑指offer
k_moji
千里之行始于足下!
展开
-
剑指offer[7]跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路: 1.每次可以跳一步或两补 2.n级台阶等于第n-1步台阶的跳法 或者等于第n-2步台阶的跳法java实现public class Solution { public int JumpFloor(int target) { if(target<=0)原创 2016-09-09 21:12:55 · 143 阅读 · 0 评论 -
剑指offer[4]栈和队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路 1、所有数据压栈,栈是先进后出,出站顺序此时正好如输入数据相反 2.上一个栈中数据出栈压入第二个栈中,后进先出,出站后,顺序正好与最开始顺序相反ps:栈1出栈压入栈2时,栈2要为空才可入栈,不然可能顺序打乱java实现import java.util.Stack;public class Sol原创 2016-09-08 21:50:17 · 120 阅读 · 0 评论 -
剑指offer[5]旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路: 1.根据题意可知,旋转后的数组部分有序。而且输入的为非递减排序数组,所以当出现不连续的地方即原创 2016-09-08 22:02:35 · 127 阅读 · 0 评论 -
剑指offer[3]从尾到头打印链表
题目描述:从尾到头打印链表输入一个链表,从尾到头打印链表每个节点的值。 输入描述:输入为链表的表头输出描述:输出为需要打印的“新链表”的表头解题思路:1、遍历listnode赋值给ArrayList2.ArrayList倒序输出,可以从长度的二分之一出,前面的赋值给末尾,前后索引逐步向中间靠拢java实现/*** pu原创 2016-09-08 21:28:53 · 123 阅读 · 0 评论 -
剑指offer[2]替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路:.新建一个字符串,逐个判断源字符串每个字符是否是空格,如果不是把判断的源字符添加到新的字符串中,如果是就在新字符串中添加‘%20’,最后返回新字符串。java实现:public class Solu原创 2016-09-04 12:27:56 · 123 阅读 · 0 评论 -
剑指offer[1]二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 时间限制:1秒空间限制:32768K解题思路:从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。如果它大于要查找的数字,则可原创 2016-09-04 10:30:23 · 121 阅读 · 0 评论 -
剑指offer【12】从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:建立两个链表,一个用来存储TreeNode节点,一个用来存储val值,每次访问节点时,如果有左右孩子,就把左右孩子节点加到链表中,并把对应的值加入到另一个链表中,依次遍历java实现:import java.util.ArrayList;/**public class TreeNode原创 2016-09-13 17:32:57 · 124 阅读 · 0 评论 -
剑指offer[12]合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路递归思想,从两个链表的第一个值开始比较,每次选取较小的值依次赋值给新的链表后面java实现:public class Solution { public ListNode Merge(ListNode list1,ListNode list2) {原创 2016-09-13 14:39:17 · 105 阅读 · 0 评论 -
剑指offer【11】反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。解题思路:递归思想例如:1-->2->3JAVA实现*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/pub原创 2016-09-13 12:21:34 · 105 阅读 · 0 评论 -
剑指offer[10]链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路: 1.定义两个指针只向头结点 2.然后再让第一个指正走(k-1)步,到达第k个节点。 3.然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了java实现/* public class ListNode { int val; ListNode next = null;Lis原创 2016-09-11 12:47:51 · 111 阅读 · 0 评论 -
剑指offer[9]二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路 利用按位与操作 a&(a-1) 移除末尾的1 java实现:public class Solution { public int NumberOf1(int n) { int count=0; while(n!=0) { n=原创 2016-09-11 12:44:55 · 120 阅读 · 0 评论 -
剑指offer[8]变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路: 因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级 跳1级,剩下n-1级,则剩下跳法是f(n-1) 跳2级,剩下n-2级,则剩下跳法是f(n-2) 所以f(n)=f(n-1)+f(n-2)+…+f(1) 因为f(n-1)=f(n-2)+f(n-3)+…+f原创 2016-09-09 21:17:23 · 131 阅读 · 0 评论 -
剑指offer[6]斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39解题思路: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 在数学上,斐波纳契数列以如原创 2016-09-08 22:18:09 · 134 阅读 · 0 评论