剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&page=2 参考资料:(java方面的一些面试答案) http://www.nowcoder.com/discuss/6890?type=0&order=0&pos=29&page=1 http://www.nowcoder.com/discuss/7342 一:java基础 1.jav…
剑指Offer--栈的java实现和栈的应用举例 栈是一种先进后出的数据结构, 栈的实现如下: 首先定义了栈需要实现的接口: public interface MyStack<T> { /** * 判断栈是否为空 */ boolean isEmpty(); /** * 清空栈 */ void clear(); /** * 栈的长度 */ int length(); /** * 数据入栈 */ boolean push(T data); /** * 数据出栈 */ T pop(); } 接下来定…
剑指offer题解(Java版) 从尾到头打印链表 题目描述 输入一个链表,按从尾到头的顺序返回一个ArrayList. 方法1:用一个栈保存从头到尾访问链表的每个结点的值,然后按出栈顺序将各个值存入ArrayList中: import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode li…
剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 题目描述 实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象.BST 的根节点 root 会作为构造…
剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. 设置一个变量,用来记录正数个数,以便在最后的结果调整正负号. 特殊情况,可能溢出的情况讨论,由于是整数除法,除数不为0,商的值一定小于等于被除数的绝对值,因此,int型溢出只有一种情况,(-2^31)/(-1) = 2^31. 最容易想到的是通过减法代替除法,但是会超时 class Solutio…
题目描述* 剑指offer面试题5:从尾到头打印链表 输入一个链表的头结点,从尾到头打印出每个结点的值 解决方案一:首先遍历链表的节点后打印,典型的"后进先出",可以使用栈来实现这种顺序.解决方案二:栈的本质就是递归,直接使用递归的方式,打印一个节点的时候先打印它后面的节点,再打印该节点自身,实现反向打印解决方案三:遍历链表,把链表中的元素复制到ArrayList中,然后逆序打印ArrayList中的元素解决方案四:前三种解决方案本身属于在打印链表的时候不修改链表本身结构,在允许修改链…
最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构以及编程思想等,与语言本身无太大关系.因此在选择编程语言时,我还是选择了Java.好吧,主要是我C++不怎么会,仅仅是曾经学过俩月,使用Java顺手一些.后续可能再用Python刷一遍. 面试题3  数组中重复的数字 题目一:找出数组中重复的数字 描述:在长度为n的数组里所有数字都在0~n-1范围内…
题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变成0,与运算进行多少次就有多少个1. package Solution; /** * 剑指offer面试题10:二进制中1的个数 * 题目:请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数. * 例如,把9表示成二进制是1001,有2位是1,该函数输出2 * 解法:把整数减一和原来的数做…
剑指offer面试题7相关题目:用两个队列实现一个栈 解题思路:根据栈的先入后出和队列的先入先出的特点1.在push的时候,把元素向非空的队列内添加2.在pop的时候,把不为空的队列中的size()-1份元素poll出来,添加到另为一个为空的队列中,再把队列中最后的元素poll出来两个队列在栈不为空的情况下始终是有一个为空,另一个不为空的.push添加元素到非空的队列中,pop把非空队列的元素转移到另一个空的队列中,直到剩下最后一个元素,这个元素就是要出栈的元素(最后添加到队列中的元素). pa…
题目:用两个栈实现一个队列.队列的声明如下:请实现他的两个函数appendTail和deleteHead, 分别完成在队列尾部插入节点和在队列头部删除节点的功能. package Solution; import java.util.Stack; /** * 剑指offer面试题7:用两个栈实现队列 * 题目:用两个栈实现一个队列.队列的声明如下:请实现他的两个函数appendTail和deleteHead, * 分别完成在队列尾部插入节点和在队列头部删除节点的功能. * @author GL…