2.0剑指offer书籍的学习

实现singleton模式:

1.首先一点,构造函数必须是private,否则会被各种生成。

2.为应付多线程,得加锁

3.提效率,锁前锁后都加判断,防治生成了对象还反复锁

面试题3:

2.0剑指offer书籍的学习

这个问题的思路,应该想想是能想出来的(感觉现在状态一般),思路就是,每次都是从右上角分析,假如大于需要找的数,删除一列,左移。假如小于所选,删除这一行,下移。直到这个数跑出去了(找不到),或者找到了。

面试题6:

2.0剑指offer书籍的学习

这个题目的精髓在于,根据前序可以知道1是根,而在中序,1前面还有4、7、2,这些是左子树的,5386是右子树的。同理,2是根节点,47是他的左子树,4是根节点,7是他的右子树,由此,完成了左子树的建立。同理完成右子树的。

2.0剑指offer书籍的学习

这个题主要是陷阱吧,就是n是位数,你肯定不能用int或者long去操作,只能考虑字符串,考虑了,就还行。2.0剑指offer书籍的学习

这个题很不错,开启一个新大门,做法是,把这个节点的后面那个节点,复制过来,删掉下一个节点就行。但是书里面给了几个注意的边界条件,一个是,假如是尾巴,则还得用顺序的方法,我其实很纳闷(假如是尾巴,删掉,相当于,前面的指针指向null,那也直接复制最后一个null就行了,然后断开next),另一个,总不能删除null吧,删除null变成啥了。所以我感觉有一丢丢问题,欢迎讨论。

2.0剑指offer书籍的学习

这个题目,乍一看思路不明显,其实加一个辅助栈,是个非常不错的决定,关键的关键,做题要去尝试,画图,举例子,从例子中获取信息,从例子中猜测边界,才能更好地想出解法。辅助栈里面一直存的是,当前状态下的最小数,push的时候,他也push,pop的时候,他也pop。

2.0剑指offer书籍的学习

这个题目和之前那个重建二叉树结合分析,其实就是分析如何分析数据,这些数据分别是在树的哪里。例如后序遍历,最后一个数是根节点,这个没问题,由由于是二叉搜索树,因此,比他小的都是左子树,同理,可以分析他的左子树,从而达到递归的目的。2.0剑指offer书籍的学习

这个题,剑指offer里的算法,不错,关键的关键,是他这个方法可以存路径的,而我之前的思路,直接递归,每次减去当前的值,叶节点等于值就是找到了,但是这种思路没有之前路径的效果。所以他用vector存路径,然后函数return的时候减去,进入的时候,进行计算,还是不错的。模拟函数递归时候,进栈和出栈的过程。

2.0剑指offer书籍的学习
爆炸了,这个题目,我的想法就是用哈希去做,感觉是个不错的办法了,起码是个O(1),剑指offer不仅给了哈希的做法,还给了一个巧妙的做法,给张图。

2.0剑指offer书籍的学习

第一步,复制一个新的,在原链表上,本来是ABCDE,现在变成AA1BB1这样子,然后第二步,复制他的第二个指针,相当于是各种next复制,第三步,拆开来。

其实这个思路是可以举一反三的,他这个难点在于,顺序不可逆,技巧在于,复制,所有的偏差都是相对的,他的思路就是利用这个相对信息 2.0剑指offer书籍的学习

觉得这个题有问题,首先是排列,他代码里没考虑重复吧,其次这个就是一个全排列对不对,然后全排列我写不出来。

这个题得研究下。书上又列举了,八皇后问题等各种问题。。就是全排穷举法后,判断符合不符合要求。

2.0剑指offer书籍的学习

状态不好,智商都快不够用了,这个题的算法都快看不懂了,那个什么找中位数的做法,我感觉,还是有点二分啊,二

加排序不得nlogn,为啥就是n了,至于第二个做法,感觉还是不错的,这个思路和清奇,但是假如没有这个数呢。配

套的,我也想了个思路,就是2个2个比较,要是2个数不同,则不作记录,2个相同,则+1,并且,记录相同的值,假如

又有两个相同,和之前的值假如一样,再+1,否则-1,最后记录的值就是超过一半的值,以例题来说,12,23,32都是0,

22,22,+2,记录2,25,54,42都是0,因此结果是2。但是这个算法有一个特例,就是2121212这种情况,我就是0了,因

此假如数奇数,只有ABACADA这种情况会被忽略,单考虑即可。但是怎么解决,没有这个数情况呢。(我的方法好像

和offer几乎是一样的)其实很简单,找到后,再去遍历一遍和自己一样的有多少就可以解决这个问题。

后面的问题真是道道都要记录下来。。

2.0剑指offer书籍的学习

这个问题,引申到了,大数据,求最大的100个数,排序的效率是nlogn,提速,nlogk,一直是对k个数就行排序,然后

然后下一个数,和最大数比,假如比他大直接扔,小的话,扔原来的最大数。然后这个排序,用最大堆来做,或者,

红黑树。