《LeetCode刷题笔记》Day1——数组

技术《LeetCode刷题笔记》Day1——数组 《LeetCode刷题笔记》Day1——数组------------恢复内容开始------------
二分查找
只要是顺序数组,都可以考虑用一下二分

《LeetCode刷题笔记》 Day1——数组

-

二分查找

只要是顺序数组,都可以考虑用一下二分查找

思考:

1.确定左右边界:左,右-1

2.算出中间值

3.与target相比,如果小,左=中1,如果大,右=中1,以此类推。

二、寻找一个数(基本的二分搜索)

这个场景是最简单的,也可能是最熟悉的,即搜索一个数字,如果它存在,返回它的索引,否则返回-1。

int binarySearch(int[] nums,int target){ 0

int left=0;

int right=nums . length-1;//注意

而(左=右){//注意

int mid=(右左)/2;

if(nums[mid]==目标)

返回中间;

否则如果(nums[中]目标)

左=中间1;//注意

否则如果(nums[中]目标)

右=中间1;//注意

}

返回-1;

}

1.为什么=是在while循环的条件下而不是?

答:因为分配给初始化权限的值是nums.length-1,也就是最后一个元素的索引,而不是nums.length

它们可能以不同的功能出现在二分搜索法。不同的是,前者相当于两端封闭的区间[左,右],后者相当于两端封闭的区间[左,右],因为nums.length的索引大小越界了。

在这个算法中,我们使用两端[左,右]闭合的区间。这个区间就是每次进行搜索的区间,我们不妨称为「搜索区间」(search space).

我们应该什么时候停止搜索?当然,当我们找到目标值时,我们可以停止搜索:

if(nums[mid]==目标)

返回中间;

但是如果没有找到,您需要终止while循环,然后返回-1。那么while循环应该在什么时候终止搜索区间为空的时候应该终止,这意味着你找不到它,这意味着你找不到它。

while(left=right)的终止条件是left==right 1,写成[right 1,right]的形式,或者用[3,2]中的特定数,我们可以看到这时候搜索区间为空,因为没有大于等于3且小于等于2的数。所以while循环终止此时是正确的,只需返回-1。

while(左右)的终止条件是left==right,它被写成[right,right]形式的一个区间,或者在[2,2]中有一个特定的数字,这时候搜索区间非空,和一个数字2,但此时while循环终止。也就是说,这个区间[2,2]已经错过,索引2还没有搜索到。如果此时直接返回-1,可能会出现错误。

当然,如果必须使用while(左右),我们已经知道错误的原因,所以只需制作一个补丁:

//.

而(左右){ 0

//.

}

return nums[left]==目标left :-1;

2.为什么左边=中间1,右边=中间1?我认为有些代码是右=中或左=中。没有这些代码,这是怎么回事,怎么判断?

答:这在二分搜索法也是一个难点,但只要你能理解前面的内容,就很容易判断出来。

刚才已经明确了“搜索区间”的概念,这个算法的搜索区间是两端封闭的,即[左,右]。那么,当我们发现索引mid不是我们要找的目标时,如何确定下一个搜索区间呢?

当然是搜索【左,中1】或者【中1,右】,对吗?因为mid已经被搜索过,所以应该从搜索范围中删除。

三.给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

目标值在数组的所有元素之前。

目标值等于数组中的一个元素。

目标值插入数组的位置。

目标值在数组的所有元素之后。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/145050.html

(0)

相关推荐

  • leetcode怎么删除排序链(leetcode 删除数组元素)

    技术LeetCode如何删除链表中指定的所有元素这篇文章主要为大家展示了“LeetCode如何删除链表中指定的所有元素”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetC

    攻略 2021年12月15日
  • 和某人交谈用英语怎么说,与什么什么交流用英语怎么说

    技术和某人交谈用英语怎么说,与什么什么交流用英语怎么说communicate with sb.或者chat with sb.communicate的基本意思是“传达”“表达”,指把信息和某人交谈用英语怎么说、知识、性能等

    生活 2021年10月29日
  • PostgreSQL搜索插件有什么优点

    技术PostgreSQL搜索插件有什么优点本篇内容主要讲解“PostgreSQL搜索插件有什么优点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL搜索插件有

    攻略 2021年11月10日
  • 女作家排行榜,当代女作家你最喜欢谁的作品

    技术女作家排行榜,当代女作家你最喜欢谁的作品文无第一武无第二女作家排行榜,说最喜欢谁真的不好说。
    推荐下林奕含吧,前段时间因为XX案件,她的作品《房思琪的初恋乐园》又一次火了起来。
    “我宁愿我是一个媚俗的人,我宁愿无知,

    生活 2021年10月30日
  • 春节来历50字,春节贴对联的由来50字

    技术春节来历50字,春节贴对联的由来50字春联作为一种独特的文学形式,在我国有着悠久的历史春节来历50字。它从五代十国时开始,明清两代尤为兴盛,发展到今天已经有一千多年了。早在秦汉以前,我国民间每逢过年,有在大门的左右悬

    生活 2021年11月1日
  • 什么是抽象工厂模式

    技术什么是抽象工厂模式这篇文章主要介绍“什么是抽象工厂模式”,在日常操作中,相信很多人在什么是抽象工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是抽象工厂模式”的疑惑有所帮助!

    攻略 2021年10月28日