ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

二分查找(Leetcode 704)

二分查找(Leetcode 704) 题目描述给定一个 n 个元素有序的升序整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target如果 target 存在返回下标否则返回 -1。提示1、你可以假设 nums 中的所有元素是不重复的。2、n 将在 [1, 10000]之间。3、nums 的每个元素都将在 [-9999, 9999]之间。解题思路这是一个标准的二分查找因为题目就叫做二分查找哈哈哈。二分查找主要的操作对象是有序数组从数组的下标进行二分操作。常见的易错点1、mid (l r)/2还是mid (l r 1)/22、第一个条件是先给r还是先给l3、while那一层不需要等号但是if的判断是需要等号的答案代码C版本classSolution{public:intsearch(vectorintnums,inttarget){intnnums.size();intl0,rn-1;if(lr)return-1;while(lr){intmid(lr)/2;if(nums[mid]target)rmid;elselmid1;}if(nums[l]target)returnl;elsereturn-1;}};classSolution{public:intsearch(vectorintnums,inttarget){intnnums.size();intl0,rn-1;if(lr)return-1;while(lr){intmid(lr1)/2;if(nums[mid]target)lmid;elsermid-1;}if(nums[l]target)returnl;elsereturn-1;}};Python版本classSolution:defsearch(self,nums:list[int],target:int)-int:l0rlen(nums)-1iflr:return-1whilelr:mid(lr)//2ifnums[mid]target:rmidelse:lmid1ifnums[l]target:returnlelse:return-1classSolution:defsearch(self,nums:list[int],target:int)-int:l0rlen(nums)-1iflr:return-1whilelr:mid(lr)//2ifnums[mid]target:lmidelse:rmid-1ifnums[l]target:returnlelse:return-1
返回列表