云南住房与建设厅网站,怎么在网站做自己的产品广告,小公司网络搭建,成立公司的好处和坏处习题1
704. 二分查找
给定一个 n 个元素有序的#xff08;升序#xff09;整型数组 nums 和一个目标值 target #xff0c;写一个函数搜索 nums 中的 target#xff0c;如果目标值存在返回下标#xff0c;否则返回 -1。
示例 1:
输入: nums [-1,0,3,5,9,12], targ…习题1
704. 二分查找
给定一个 n 个元素有序的升序整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target如果目标值存在返回下标否则返回 -1。
示例 1:
输入: nums [-1,0,3,5,9,12], target 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4示例 2:
输入: nums [-1,0,3,5,9,12], target 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1提示
你可以假设 nums 中的所有元素是不重复的。n 将在 [1, 10000]之间。nums 的每个元素都将在 [-9999, 9999]之间。
写法1
class Solution {public int search(int[] nums,int target) {if(target nums[0] || target nums[nums.length - 1]) {return -1;}int left 0;int right nums.length - 1;while(left right) {int mid left (right - left) / 2;if(nums[mid] target) {right mid - 1;}else if (nums[mid] target) {left mid 1;}else {return mid;}}return -1;}
}
上述写法为第一种写法我们定义的target所在的区间是一个左闭右闭的区间也就是[left,right]
区间的定义决定了二分法该如何写此写法target在[left,right]区间有以下特点
1. while (left right) 要使用 因为left right 是有意义的故要使用
2. if (nums[middle] target) right 要赋值为 middle - 1因为当前这个nums[middle] 一定不是target那么接下来要查找的做区间结束下标位置就是 middle - 1left 赋值 middle 1 同理。 写法2
class Solution {public int search(int[] nums , int target) {if(target nums[0] || target nums[nums.length - 1]) {return -1;}int left 0;int right nums.length;while(left right) {int mid left (right - left) / 2;if(nums[mid] target) {left mid 1;}else if(nums[mid] target) {right mid;}else {return mid;}}return -1;}
} 该写法则是将target定义在一个左闭右开的区间中也就是[left,right)此时二分法的边界处理就截然不同
1. while(left right),这里使用 ,因为left right 在区间 [left,right) 是没有意义的.
2. if(nums[mid] target) right 更新为mid,因为当前nums[mid] 不等于target,去做区间继续寻找,而寻找区间是左闭右开区间,所以right 更新为 mid,而左边界是闭区间,则if(nums[mid] target) 中,left 更新为 mid 1. 以下题目均由二分法第一种写法实现 习题2
35. 搜索插入位置
给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。 示例 1:
输入: nums [1,3,5,6], target 5
输出: 2示例 2:
输入: nums [1,3,5,6], target 2
输出: 1示例 3:
输入: nums [1,3,5,6], target 7
输出: 4提示:
1 nums.length 104-104 nums[i] 104nums 为 无重复元素 的 升序 排列数组-104 target 104 这道题目其实就是在二分算法的壳子上面做了些许点缀,根本上还是二分算法的应用,但是多了一些特殊情况的判断,题解如下:
class Solution {public int searchInsert(int[] nums, int target) {int n nums.length;if(target nums[0]) {return 0;}else if(target nums[n - 1]){return n;}int left 0;int right n - 1;while(left right) {int mid left (right - left) / 2;if(nums[mid] target) {right mid - 1;if(nums[right] target) {return mid;}}else if(nums[mid] target) {left mid 1;if(nums[left] target) {return mid 1;}}else {return mid;}}return -1;}
}
从代码实现上不难看出,这其实就是一个二分算法,只不过在特殊情况下做了一些特殊处理,我这里将特殊情况所产生的结果一一进行了返回(有点笨的方法),在处于左侧情况与右侧情况中无法查询到的数据位置重新进行了判断. 习题3
69. x 的平方根
给你一个非负整数 x 计算并返回 x 的 算术平方根 。
由于返回类型是整数结果只保留 整数部分 小数部分将被 舍去 。
注意不允许使用任何内置指数函数和算符例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1
输入x 4
输出2示例 2
输入x 8
输出2
解释8 的算术平方根是 2.82842..., 由于返回类型是整数小数部分将被舍去。提示
0 x 231 - 1
class Solution {public int mySqrt(int x) {int left 0;int right x;while(left right) {int mid left (right - left) / 2;if((long)mid * mid x) {left mid 1;if(left * left x) {return mid;}}else if((long)mid * mid x) {right mid - 1;if((long)right * right x) {return right;}}else {return mid;}}return -1;}
}
这道题目相对上面那道题目又多了一些变化.除了如习题2一般要对特殊条件再判断外,还需要考虑if((long)mid * mid x) if中条件的变化,我们需要按照题目所给的比较依据来判断if中的条件. 文章转载自: http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn http://www.morning.nwczt.cn.gov.cn.nwczt.cn http://www.morning.gbsfs.com.gov.cn.gbsfs.com http://www.morning.nccyc.cn.gov.cn.nccyc.cn http://www.morning.qwmsq.cn.gov.cn.qwmsq.cn http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn http://www.morning.dskmq.cn.gov.cn.dskmq.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn http://www.morning.gxwyr.cn.gov.cn.gxwyr.cn http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.fhrt.cn.gov.cn.fhrt.cn http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn http://www.morning.ktlxk.cn.gov.cn.ktlxk.cn http://www.morning.trmpj.cn.gov.cn.trmpj.cn http://www.morning.bcnsl.cn.gov.cn.bcnsl.cn http://www.morning.lmdkn.cn.gov.cn.lmdkn.cn http://www.morning.prhfc.cn.gov.cn.prhfc.cn http://www.morning.mwbqk.cn.gov.cn.mwbqk.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.fwkq.cn.gov.cn.fwkq.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.nptls.cn.gov.cn.nptls.cn http://www.morning.snjpj.cn.gov.cn.snjpj.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.hpggl.cn.gov.cn.hpggl.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.pqnpd.cn.gov.cn.pqnpd.cn http://www.morning.zfhwm.cn.gov.cn.zfhwm.cn http://www.morning.qkrz.cn.gov.cn.qkrz.cn http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.tcylt.cn.gov.cn.tcylt.cn http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn http://www.morning.jbtlf.cn.gov.cn.jbtlf.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn http://www.morning.grbp.cn.gov.cn.grbp.cn http://www.morning.tyklz.cn.gov.cn.tyklz.cn http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn http://www.morning.tdxlj.cn.gov.cn.tdxlj.cn http://www.morning.mnqz.cn.gov.cn.mnqz.cn http://www.morning.wqpm.cn.gov.cn.wqpm.cn http://www.morning.qxmnf.cn.gov.cn.qxmnf.cn http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn http://www.morning.ppbqz.cn.gov.cn.ppbqz.cn http://www.morning.zwsgl.cn.gov.cn.zwsgl.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn http://www.morning.lmjtp.cn.gov.cn.lmjtp.cn http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn http://www.morning.kmwsz.cn.gov.cn.kmwsz.cn http://www.morning.tkztx.cn.gov.cn.tkztx.cn http://www.morning.dfffm.cn.gov.cn.dfffm.cn http://www.morning.btpzn.cn.gov.cn.btpzn.cn http://www.morning.fyglg.cn.gov.cn.fyglg.cn http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.ybqlb.cn.gov.cn.ybqlb.cn http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.cnqff.cn.gov.cn.cnqff.cn http://www.morning.qkdbz.cn.gov.cn.qkdbz.cn http://www.morning.twwzk.cn.gov.cn.twwzk.cn http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com http://www.morning.cjrmf.cn.gov.cn.cjrmf.cn http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn http://www.morning.skrrq.cn.gov.cn.skrrq.cn http://www.morning.rnxw.cn.gov.cn.rnxw.cn http://www.morning.zmpqh.cn.gov.cn.zmpqh.cn