第五周(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

 

posted @ 2024-10-15 19:55  董雅洁  阅读(3)  评论(0编辑  收藏  举报