《剑指offer》笔记(java)

Posted 酷叮喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《剑指offer》笔记(java)相关的知识,希望对你有一定的参考价值。

推荐一本好书《剑指offer》,很多面试的编程题,而且基础对数据结构在上面都有提到,而且书不厚,可以很快看完,主要看解题的思路,和上面的面试题和基础数据结构,遇到不会的,请立刻上网找博客弄懂,还有代码如果不是c/c++的话,可以自己用自己的语言写一遍实现(或者上网找,很多人都有总结),清明节2天看了三分之一,加油!!
参考代码:http://www.cnblogs.com/hugofly/p/4445437.html
http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/zhangzqit/article/details/49513493
(没发全部粘贴,只能把参考的大牛博客地址给你们(^ω^))
----------我是不弃不离的风格分割线--------------
一、
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
public class Singleton
private static volatile Singleton INSTANCE = null;
/*就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果不加入volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。*/
private Singleton()
public static Singleton getInstance()
if (INSTANCE == null)
synchronized (Singleton.class)
if (INSTANCE == null)
INSTANCE = new Singleton();



return INSTANCE;


二、04-替换空格

public class ReplaceBlank 
    public String replaceBlank(String input)
    
        if(input==null)
            return null;
        StringBuffer outputBuffer=new StringBuffer();
        for(int i=0;i<input.length();i++)
        
            if(input.charAt(i)==' ')
            
                outputBuffer.append("%");
                outputBuffer.append("2");
                outputBuffer.append("0");
            
            else 
                outputBuffer.append(String.valueOf(input.charAt(i)));
            
        
        return new String(outputBuffer);
    

三、快速排序http://blog.csdn.net/morewindows/article/details/6684558 讲的很清楚

//快速排序
void quick_sort(int s[], int l, int r)

    if (l < r)
    
        //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
        int i = l, j = r, x = s[l];
        while (i < j)
        
            while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
                j--;  
            if(i < j) 
                s[i++] = s[j];

            while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
                i++;  
            if(i < j) 
                s[j--] = s[i];
        
        s[i] = x;
        quick_sort(s, l, i - 1); // 递归调用 
        quick_sort(s, i + 1, r);
    

以上是关于《剑指offer》笔记(java)的主要内容,如果未能解决你的问题,请参考以下文章

刷题笔记| 快速刷完67道剑指offer(Java版)

刷题笔记| 快速刷完67道剑指offer(Java版)

力扣(LeetCode)剑指offer刷题笔记(java),已完结!!!

力扣(LeetCode)剑指offer刷题笔记(java),已完结!!!

LeetCode Java刷题笔记—剑指 Offer 22. 链表中倒数第k个节点

LeetCode Java刷题笔记—剑指 Offer 54. 二叉搜索树的第k大节点