面试题
SihgYu
Miracles sometimes occur, but one has to work terribly for them.
展开
-
java中间变量缓存机制
先来看一段代码:public class Test{ public static void main(String args[]){ int j = 0; for(int i = 0 ;i < 100;i++){ j = j++; } System.out.println(j); }...原创 2019-03-21 20:10:15 · 928 阅读 · 0 评论 -
【剑指offer】反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。思路分析:当前节点为head,反转链表应该将当前节点的下个节点next指向当前节点,而当前节点的next则为pre,但是如果直接将下个节点的next指针指向当前节点则会使后面的链表断掉,所以应该记录当前节点的下一个节点。依次反复这个操作。。。AC代码:/*public class ListNode { int v...原创 2019-08-06 17:14:44 · 116 阅读 · 0 评论 -
【剑指offer】跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题目解析:当只有一节台阶的时候由于每次只能跳一级或者两级,则只有一种方式,即f(1) = 1;如果有两个台阶则有f(2) = 2;如果有n个台阶,第一次跳了1节,则剩下的方式为f(n-1),如果第一次跳了2节,则剩下的为f(n-2),所以f()=f(n-2...原创 2019-08-01 15:55:04 · 100 阅读 · 0 评论 -
【剑指offer】旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路:采用二分法解答这个问题,mid = low + (high - low)/2需要考...原创 2019-08-01 14:59:27 · 104 阅读 · 0 评论 -
【剑指offer】重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:#前序序列:1 2 3 4 5 6 7#中序序列:3 2 4 1 6 5 7#此算法过程:#pre : 1 2 3 4 5 6 7...原创 2019-08-01 14:39:05 · 108 阅读 · 0 评论 -
城市修建-java
题目描述:有一个城市需要修建,给你N个民居的坐标X,Y,问把这么多民居全都包进城市的话,城市所需最小面积是多少(注意,城市为平行于坐标轴的正方形)输入:20 02 2输出 :4代码:import java.util.*;public class ChengShi{ public static void main(String[] args) { ...原创 2019-08-01 09:33:54 · 214 阅读 · 0 评论 -
【剑指offer】用两个栈实现队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路:整体思路是元素先依次进入栈1,当栈2是空的时候就把栈1中的元素依次push到栈2中,这样在取栈2的元素就相当于一个先入先出的队列,栈2不为空的时候直接在栈2中取,如果取完了这时栈1中还有元素就继续push到栈2中,如此反复。。。AC代码:import java.util.S...原创 2019-07-30 10:41:31 · 114 阅读 · 0 评论 -
【剑指offer】从尾到头打印链表
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:两种思路,第一个是通过栈的特点,先入后出,将链表中的数据插入到栈中,出栈之后即为逆序,第二个思路是通过递归,其实也是借助于栈的实现。AC代码:/*** public class ListNode {* int val;* ListNode next = ...原创 2019-07-30 10:12:40 · 99 阅读 · 0 评论 -
【剑指offer】替换空格
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:在不考虑java自带的replace函数的情况下,分两种情况,从前向后和从后向前,由于一个空格替换成三个字符,所以应该考虑到越界的问题,从前向后替换需要每替换一次进行一次扩容,从后向前则只需要先进行一次扩容,再进行替换...原创 2019-07-24 11:57:45 · 109 阅读 · 0 评论 -
【剑指offer】二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路:看到这题的第一反应其实是直接调用java的方法将整数变成二进制字符串,即调用Integer.toBinaryString(),然后调用toCharArray(),这样就讲一个整数变成一个二进制数组,通过遍历二进制数组完成计数。但是这种题一般应该是通过位运算来解决的,并且速度上应该更快,考察的知识点应该也...原创 2019-08-06 17:31:56 · 139 阅读 · 0 评论