Day1 | 704、35

Day1 | 704、35 Day1 | 704、35#一、二分查找前提有序、存在已知target核心数组中与target后等于、小于、大于target的情况注意左开右闭和左闭右闭情况下边界值的处理1.二分查找-左闭右闭classSolution{publicintsearch(int[]nums,inttarget){//最左边的元素下标为0intleft0;//最后一个元素下标是 nums.length-1intrightnums.length-1;while(leftright){//在Java中/运算符是整数除法 结构是整数 舍去小数部分intmiddleleft(right-left)/2;if(nums[middle]target){rightmiddle-1;}elseif(nums[middle]target){leftmiddle1;}else{returnmiddle;}}return-1;}}2.二分查找-左闭右开classSolution{publicintsearch(int[]nums,inttarget){//左闭右开intleft0;intrightnums.length;while(leftright){intmiddleleft(right-left)/2;if(nums[middle]target){rightmiddle1;}elseif(nums[middle]target){leftmiddle;}else{returnmiddle;}}return-1;}}拓展题目:搜索插入位置classSolution{publicintsearchInsert(int[]nums,inttarget){//主要分四种情况//1.最前面 2.最后面 3.在中间 4.在中间有targetif(nums[0]target){return0;}if(nums[nums.length-1]target){returnnums.length;}intleft0;intrightnums.length-1;while(leftright){intmiddleleft(right-left)/2;if(nums[middle]target){rightmiddle-1;}elseif(nums[middle]target){leftmiddle1;}else{returnmiddle;}}returnleft;}}