剑指offer
but6565
这个作者很懒,什么都没留下…
展开
-
面试题8:旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。java代码:iimport java.util.ArrayList;public c原创 2017-08-16 17:53:11 · 139 阅读 · 0 评论 -
面试题17:合并两个排序的列表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。java代码:非递归版本:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;原创 2017-08-17 17:42:10 · 504 阅读 · 0 评论 -
面试题16:反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素java代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Soluti原创 2017-08-17 16:12:29 · 205 阅读 · 0 评论 -
面试题7:用栈来实现队列的功能。
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。代码:import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push原创 2017-08-10 14:24:42 · 250 阅读 · 0 评论 -
面试题6:二叉树重构建
面试题6题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码:public class Solution { public TreeNode reConstructBina原创 2017-08-10 13:55:32 · 202 阅读 · 0 评论 -
面试题15:链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。java代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solutio原创 2017-08-17 14:46:01 · 205 阅读 · 0 评论 -
面试题14:调整数组顺序使得奇数位于偶数之前
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。java代码:import java.util.ArrayList; public class Solution { public void reOrderArray(int []原创 2017-08-17 14:01:56 · 179 阅读 · 0 评论 -
面试题12:打印1到最大的n位数
题目:输入数字n,按顺序打印出从1到最大的n位十进制数字,比如,输入3,打印出1,2,3一直到最大的3位数999。分析:1、这是一个典型的大数加法问题,无论是int还是long long类型多无法表示。所以在解决大数问题时,通常是使用字符串或者数组实现其功能(由于个人比较钟爱数组,所以下面代码是使用数组实现的)。2、在大数的加法中,我们需要注意的问题是进位问题。3、在该题中还需要判断是否为最大的n原创 2017-08-17 13:22:25 · 143 阅读 · 0 评论 -
面试题3:二维数组中的查找
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:如果该数字等于要查找的数字,查找过程结束。如果该数字大于要查找的的数字,剔除该列。如果该数字小于要查找的数字,剔除该行。代码:java版本:public class Solution {原创 2017-08-09 18:38:31 · 134 阅读 · 0 评论 -
面试题4:将空格换成其他的字符串
题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。代码:java:public class Solution { public String replaceSpace(StringBuffer str) { StringBuffer newstr原创 2017-08-09 21:17:44 · 233 阅读 · 0 评论 -
京东内推:最大连续乘积子数组
最大连续乘积子数组出处:http://blog.csdn.net/wangche320/article/details/9240461题目描述 给定一个浮点数数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。例如,给定数组{−2.5, 4, 0, 3, 0.5, 8, −1},则取出的最大转载 2017-08-09 21:21:33 · 286 阅读 · 0 评论 -
面试题5:从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。代码:/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }原创 2017-08-09 21:38:16 · 144 阅读 · 0 评论 -
面试题2:实现Singleton模式
public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null){ Singleton t = new Singleton();原创 2017-08-09 21:48:27 · 154 阅读 · 0 评论 -
面试题11:数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方java代码:public class Solution { public double Power(double base, int exponent) { double result = 1.0; if(exp原创 2017-08-16 23:02:04 · 160 阅读 · 0 评论 -
面试题10 :二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。java代码:public class Solution { public int NumberOf1(int n) {int count = 0; while(n!=0){ n=(n-1)&(n); count++;原创 2017-08-16 23:00:33 · 147 阅读 · 0 评论 -
面试题9:斐波那契数列
问题描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。njava代码:public class Solution { public int Fibonacci(int n) { int[] array = new int[n+1];; if(n==0) re原创 2017-08-16 21:56:13 · 138 阅读 · 0 评论 -
连续子数组的最大和
动态规划:设sum[i]为以第i个元素结尾且和最大的连续子数组。假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且和最大的连续子数组实际上,要么是以第i-1个元素结尾且和最大的连续子数组加上这个元素,要么是只包含第i个元素,即sum[i] = max(sum[i-1] + a[i], a[i])。可以通过判断sum[i-1] + a[i]是否大于a[i]来做原创 2017-08-09 17:01:48 · 274 阅读 · 0 评论 -
面试题18:树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val)原创 2017-08-17 19:57:49 · 149 阅读 · 0 评论