第五周(10.8-10.19)
代码题:
1、给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
题解:如果等于nums[middle],返回middle;否则返回left或者low。
2、在排序数组中查找target的开始位置和结束位置。
二分法不可能会漏掉正确结果的。
思路:将开始位置和结束位置的查找分为两部分代码:findLeft()和findRight();
如何循环能够得到左部的最小值和右部的最大值?
finLeft():当已经找到nums[mid]==target时,让right=mid-1,继续二分查找,重复上述步骤,若还有更新的nums[mid]==target,则更新左边界值。
findRight()同理。
关键代码:
findLeft(): findRight():
3、找到非负数x的平方根
1)首先是左闭右闭,所以while(left<=right)
2)搞清楚二分法是从中间开始向两边,当middle值小于Target值后,先记录此时的middle值,然后继续往右移进行试探看还有没有符合的值,因为只可能出现在大于该middle值的情况,直到left>right。和上题findRight()思路相同
Java学习:
1、Thread.sleep()在线程继承类中只能try-catch,因为Thread中的没有throws的任何信息
2、懒汉式:私有化类构造器,在类中声明静态类变量,并在静态方法中初始化并返回。
3、
4、线程通信设计三个方法的使用,只适用于同步代码块synchronized