当前位置: 首页 > wzjs >正文

深圳人为什么不想去龙岗长沙seo就选智优营家

深圳人为什么不想去龙岗,长沙seo就选智优营家,来凡网站建设公司,品牌策划方案模板1 数组基础理论 数组是存放在连续内存空间上的相同数据结构的集合。数组可以通过下标索引快速获取数据,因为数组的存储空间是连续的所以在删除、更新数据的时候需要移动其他元素的地址。 下图是一个数组的案例图形:【内存连续、索引小标从0开始可…

1 数组基础理论

        数组是存放在连续内存空间上的相同数据结构的集合。数组可以通过下标索引快速获取数据,因为数组的存储空间是连续的所以在删除、更新数据的时候需要移动其他元素的地址。
        下图是一个数组的案例图形:【内存连续、索引小标从0开始可以依次获得数据】

 删除113位置的数据,删除前和删除后对照

 数组的元素是不能删除的,只能覆盖。


2、二分查找

704. 二分查找 - 力扣(LeetCode)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 提示: 1. 你可以假设 nums 中的所有元素是不重复的。 2. n 将在 [1, 10000]之间。 3. nums 的每个元素都将在 [-9999, 9999]之间。https://leetcode.cn/problems/binary-search/description/

2.1 题目

给定一个 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

提示:

  1. 你可以假设 nums 中的所有元素是不重复的
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间。

2.2 解题思路 

        首先强调了是有序数组,其次是元素不重复,因为一旦元素允许重复使用二分查找法返回的元素下标可能不是唯一的;这些都是使用二分查找的前提条件。
        可以采用暴力的方式,逐个遍历对比跟目标值是否相等。也可以采用二分查找的方式,会有三个索引下标 left  middle right,每次拿middle对应的值跟target比较,如果大于target则right移动到middle位置,如果小于target则left移动到middler,如果相等则直接返回下标即可。注意在二分查找的实现中,对应target定义是在一个怎么的区间中比如[left,right)[left,right], 左闭右开,左闭右闭,这两种定义方式,直接影响了代码逻辑的编写方式。
        [left,right):这种方式left=right是没有意义的<具体可以3.2代码方式>
        [left,right]:这种方式left=right是有意义的<具体可以3.3代码方式>

3 代码实现

        3.1 暴力方式

        使用遍历,从前往后依次查找到目标元素并返回对应的下标。算法的时间复杂度O(n),虽然实现比较简单,但是时间复杂度很高。时间复杂度O(n)  空间复杂度O(1)

class Solution {public int search(int[] nums, int target) {for (int i=0;i<nums.length; i++) {if (nums[i]==target) {return i;}}return -1;}
}

    3.2 二分查找([left,right))

在这种方式后right是值是有意义的,所在在向前移动的时候,应该是middle,其次初次right应该是数组的长度(最大的索引下标是length-1)。时间复杂度O(log n)  空间复杂度O(1)
 

class Solution {public int search(int[] nums, int target) {int left = 0;int right = nums.length; // 应该是length, [left,right)while (right>left) {int middle = (right+left) / 2;if (nums[middle] > target) {right = middle ; // 应该是middle,不是middle-1 [left,right)} else if (nums[middle] < target) {left = middle + 1;} else {return middle;}}return -1;}
}

  3.3 二分查找 [left,right]

在这种方式后right是值是有意义的,所在在向前移动的时候,应该是middle-1,其次初次right应该是数组的长度-1(最大的索引下标是length-1)。时间复杂度O(log n)  空间复杂度O(1)

class Solution {public int search(int[] nums, int target) {int left = 0;int right = nums.length - 1; // 应该是length-1 [left,right]while (right>=left) {int middle = (right+left) / 2;if (nums[middle] > target) {right = middle - 1; // 应该是middle -1 [left,right]} else if (nums[middle] < target) {left = middle + 1;} else {return middle;}}return -1;}
}


        

http://www.dtcms.com/wzjs/20863.html

相关文章:

  • 站长统计网站大全推广团队在哪里找
  • 官方网站aspcms网站建设公司大型
  • 微信导购网站怎么做视频教学百度经验发布平台
  • 政府网站建设运维自查seo优化方法有哪些
  • 罗村网站建设公司淄博头条新闻今天
  • 建设网站火车票预订网络域名综合查询
  • 描述网站建设规范方法湖南关键词优化首选
  • 文案策划网站北京口碑最好的it培训机构
  • 和县网站制作seo与sem的区别与联系
  • 提供网站建设公司哪家好品牌营销策划公司哪家好
  • 佛山购物网站建设旅游最新资讯
  • 装修平台app优化外包哪里好
  • 福永做网站长沙seo排名公司
  • 网站开发题目软文营销经典案例优秀软文
  • 用sqlite3做网站吉林网站seo
  • 涪陵网站建设品牌策划方案怎么做
  • 电影网站制作毕业论文摘要靠谱的免费建站
  • 别人做的网站怎么打开吗第三方网站流量统计
  • 做网站销售提成怎么算平台推广怎么做
  • 无锡 网站建设公司小网站广告投放
  • 建设网站电脑配置全球十大搜索引擎入口
  • 个人备案可以做哪些网站销售推广的方法都有哪些
  • 服务器安装完面板怎么做网站美国今天刚刚发生的新闻
  • 网站建设岗位将来有什么发展seo团队
  • 系统开发北京网站建设国内产女装一线二线品牌知乎
  • 完整的网站后台权限编码今晚日本比分预测
  • html5 做网站宁波网站关键词优化公司
  • 佛教网站大全网企业官网seo
  • 衡阳网站建设qiandu1白酒营销策划方案
  • 阳江做网站单页关键词优化费用