##leetcode704 https://leetcode.cn/problems/binary-search/
这个题的难点是边界的处理,主要是包括这几点:
1.right是要等于数组的长度还是等于长度减一
2.循环的便利条件是left<right还是left<=right
3.在区间缩小时是mid=left还是mid=left+1
以后只用right=长度减一,当区间我们设置为mid=left+1时,此时可能left==right,因此循环条件要设置为left<=right;为了防止超出数组的下标,我们选择right=length-1,让我们更轻松使用nums[riht]而不用考虑下标越界的问题。
还有一个需要注意的点是mid=left+(right-left)/2,而不是mid=(left+right)/2;
因为left+right可能会超出int的最大值,而right不超过,第二种得到的方法比right小,所以第二种也不会超过,因此第二种比较安全
##leetcode27 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
这个题前几天刚做过,双指针的方法,不过我思维僵化,当时只记得双指针方法left是数组头下标,right是尾下标,但是这个双指针都是从0开始,right在前,left在后,一旦nums[right]==var;此时left不动,right前移一位,当条件不成立时,就将不等于var时,将nums[left]=nums[right],left++;right++;其思想就是通过让right指针去探路,一旦发现不等于var的值,就让lef指针来记录,等于就跳过,最后返回长度时直接返回left值,而不是left+1,因为每次不等var,left都会+1,已经抵消了初始下表为0,而要求返回长度的影响,这个题跟删除某链表的倒数第n个节点优点类似,left和right都是在同一侧,而不是两端的端点
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
##工作上
###<dependencymanager>和<dependencies>的 区别
两者都可以引入包,但是<dependencymanager>也仅仅是引入了包,其子模块的pom文件没有继承这些包(如果子模块种的相关pom文件不声明引入这些依赖,是没法使用这些包的)父模块的pom文件中如果<dependencies>引入了包,子模块pom中中不声明引入这些依赖,也能使用这些包,那<dependencymanager>有什么作用呢?其主要作用就是包的版本管理,其子模块的pom文件虽然需要声明才能使用<dependencymanager>中声明的包,但是可以只声明g和a而不声明<version>和<scope>,其会跟据ga寻找父模块的pom中<dependencymanager>中的相同的ga,找到匹配项后,根据匹配项的vs(<version><scope>)来作为自己的版本号和作用域,便于版本号的发生变化时进行修改如果子模块pom除了声明ga还声明了vs,其vs根据自己声明的保持一致,而不再找父模块pom中的相关设置,为了防止包冲突,即:项目依赖了a和b两个包,但是a本身也依赖b,但是两个依赖的版本不同,为了排除a依赖中b的影响,会使用<excludes>标签来排除影响。