![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
TaylorSwift_1989
这个作者很懒,什么都没留下…
展开
-
剑指offer Java no.02
No.2 设计一个类,我们只能生成该类的一个实例。(单例模式可以防止数据冲突,节省内存空间)饿汉式class A{ private static final A a = new A(); private A(){} public static A getInstance(){ return a; }}getInstance():私有...原创 2019-04-01 16:06:20 · 205 阅读 · 0 评论 -
剑指offer java NO12
NO12:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数, 同时不需要考虑溢出问题。public class NO12 { /** * 实现函数double Power(double base,int exponent), * 求base的exponent次方。不得使用库函数, ...原创 2019-04-15 12:28:59 · 175 阅读 · 0 评论 -
剑指offer java NO11
NO11:请实现一个函数,输入一个整数,输出该二进制表示中1的个数。例如把9表示成二进制是1001, 有2位是1。因此如果输入9,该函数输出2。public class NO11 { public static void main(String[] args) { int n = 9; NO11A no11A = new NO11A(); ...原创 2019-04-15 11:10:41 · 129 阅读 · 0 评论 -
剑指offer java NO16
NO16:输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。(注意代码健壮性,考虑输入空指针,链表结点总数少于k,输入的k参数为0)下面的解法用了两个指针,只需遍历一次链表。写一个链表类:/** * @...原创 2019-04-16 14:41:18 · 151 阅读 · 0 评论 -
剑指offer java NO15
NO15:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。思考:定义两个指针,分别指向数组的头(start)和尾(end)。如果头指针指向的是奇数,则后移一位,尾指针指向的是偶数,则前移一位。当头指针指向的是偶数且尾指针指向的是奇数的时候,头尾指向的值互换。循环条件:start < end 因为start == e...原创 2019-04-16 13:22:54 · 175 阅读 · 0 评论 -
剑指offer java NO14
NO14: 给定单向链表的头指针和一个结点指针, 定义一个函数在O(1)时间删除该节点思考:在单向链表中删除一个节点,有两种方法。a. 从头结点开始遍历,直到temp.getNext()等于要删除的节点,找到要删除的节点进行删除。时间复杂度为O(n)b. 已知要删除的节点,这个节点的下一个节点的值覆盖掉此节点,然后此节点指向下下一个节点。时间复杂度为O(1)在b方法中有几个点需要进行讨论:...原创 2019-04-16 11:39:41 · 126 阅读 · 0 评论 -
剑指offer java NO13
NO14: 输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999一般考虑用int/ long数据类型。但是在大数问题中会有溢出。使用字符串和数组是处理大数问题的好方法。public class NO13 { /** * 输入数字n,按顺序打印出从1最大的n位十进制数。 * 比如输入3,则打印出1、2、3一直到最大的...原创 2019-04-16 09:48:55 · 151 阅读 · 0 评论 -
剑指offer java NO.10
NO.10 求斐波那契数列的第n项(青蛙跳台阶问题) 如计算f(10)public class NO10 { public static void main(String[] args) { NO10A no10A = new NO10A(); System.out.println(no10A.fibonacci(10)); }}class NO10...原创 2019-04-02 21:39:32 · 144 阅读 · 0 评论 -
剑指offer java NO.08
NO.08: 用两个栈实现队列,队列声明的函数有appendTail和deleteHead, 分别完成在队列尾部插入节点和删除队列头部节点的功能。这个题很简单,用两个栈就可以实现。不多BBimport java.util.Stack;public class NO09 { public static void main(String[] args) { char[] que...原创 2019-04-02 20:43:35 · 182 阅读 · 0 评论 -
剑指offer java NO.07
NO.07 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。例如输入的前序遍历序列{1,2,4,7,3,5,6,8}, 和中序遍历序列{4,7,2,1,5,3,8,6}. 最后请输出该二叉树的后序遍历结果。先写个二叉树的类BinaryTreeNodepublic class BinaryTreeNode { private char data; private B...原创 2019-04-02 19:43:32 · 149 阅读 · 0 评论 -
剑指offer Java NO.06
NO.06 单向链表反转例如:将一个单项链表1234567,反转输出为7654321先写一个单项链表Node类方便以后调用//单向链表public class Node { String data; Node next; public Node(String data) { super(); this.data = data;...原创 2019-04-02 15:58:51 · 184 阅读 · 0 评论 -
剑指offer java no.05
no.05: 请实现一个函数,把字符串中的每个空格替换成"%20"例如输入"We are happy",则输出"We%20are%20happy"public class NO05 { public static void main(String[] args) { String string = new String("We are happy"); ...原创 2019-04-02 14:13:53 · 193 阅读 · 0 评论 -
剑指offer java no.04
NO.04: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该数。public class NO04 { public static void main(String[] args) { int [][] matrix = {{1,2,8,9}, {2,4,9,1...原创 2019-04-01 23:59:00 · 232 阅读 · 0 评论 -
剑指offer java no.03B
no.03B: 在长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。找出数组中重复的数字,但是不能改变数组。{2,3,5,4,3,2,6,7},那么对应输出的数字就应该是2或者3两种思路:运用辅助数组二分法public class NO03B { public static void main(String[]args){ in...原创 2019-04-01 20:53:01 · 163 阅读 · 0 评论 -
剑指offer Java no.03
no.03: 在一个长度为n的数组中的所有数字都在0~n - 1的范围内。找出数组中任何一个重复的数字public class NO03 { /** * 在一个长度为n的数组中的所有数字都在0~n - 1的范围内。 * 找出数组中任何一个重复的数字 */ public static void main(String[] args) { ...原创 2019-04-01 17:24:15 · 207 阅读 · 0 评论 -
剑指offer java NO17
NO17输入两个递增排序的链表,合并这两个链表并使新链表中结点仍然是按照递增排序的。例如输入1->3->5->7和2->4->6->8,则合并之后的升序链表应该是1->2->3->4->5->6->7->8 。先写一个单向链表类/** * @author * 单向链表 */public class ...原创 2019-04-18 18:27:20 · 207 阅读 · 1 评论