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

建设通网站2021最火关键词

建设通网站,2021最火关键词,上海企业地址大全,wordpress tag list给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 < numbers…

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。

以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。

你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

你所设计的解决方案必须只使用常量级的额外空间。

 

前言


这道题可以使用「1. 两数之和」的解法,使用 O(n^2) 的时间复杂度和 O(1) 的空间复杂度暴力求解,或者借助哈希表使用 O(n) 的时间复杂度和 O(n) 的空间复杂度求解。但是这两种解法都是针对无序数组的,没有利用到输入数组有序的性质。利用输入数组有序的性质,可以得到时间复杂度和空间复杂度更优的解法。

方法一:二分查找


在数组中找到两个数,使得它们的和等于目标值,可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数组的有序性质,可以通过二分查找的方法寻找第二个数。为了避免重复寻找,在寻找第二个数时,只在第一个数的右侧寻找。

//二分法查找
class Solution {public int[] twoSum(int[] numbers, int target) {for (int i = 0; i < numbers.length; ++i) {int low = i + 1, high = numbers.length - 1;while (low <= high) {int mid = (high -low) / 2 + low;if (numbers[mid] == target - numbers[i]) { //target - numbers[i]为要寻找的第二个加数值return new int[] {i + 1, mid + 1};//生成新数组返回} else if (numbers[mid] > target - numbers[i]) {high = mid - 1;} else {low = mid + 1;}}}return new int[] {-1, -1};}
}

 

复杂度分析

  • 时间复杂度:O(nlogn),其中 n 是数组的长度。需要遍历数组一次确定第一个数,时间复杂度是 O(n),寻找第二个数使用二分查找,时间复杂度是 O(logn),因此总时间复杂度是  O(nlogn)。
  • 空间复杂度:O(1)。

方法二:双指针

复杂度分析

  • 时间复杂度:O(n)O(n),其中 nn 是数组的长度。两个指针移动的总次数最多为 nn 次。

  • 空间复杂度:O(1)O(1)。

  • //双指针
    //思想:通过匹配找到两数之和,同时不断缩小范围()
    class Solution {public int[] twoSum(int[] numbers, int target) {int low = 0, high = numbers.length - 1;while (low < high) {int sum = numbers[low] + numbers[high];if (sum == target) {return new int[] {low + 1, high + 1}; //生成新数组返回}else if (sum < target) { //加数之和比目标值小,low值增大++low;} else { //加数之和比目标值大,high值减小--high;}}return new int[] {-1, -1};//找不到,就返回}
    }

http://www.shuangfujiaoyu.com/news/35789.html

相关文章:

  • 个人做电影网站违法吗中国楼市最新消息
  • 四川网站建设套餐网页制作软件哪个好
  • 新手公司网页设计模板免费seo在线优化
  • 网站群建设 公司网站查询入口
  • 网站建设规划书3000字深圳网站seo优化
  • 网站验证码原理国外网站推广平台有哪些?
  • 永川做网站的南昌seo公司
  • 企业网站带新闻发布功能的建站请你设计一个网络营销方案
  • 宠物店网站建设计划书推广app赚佣金接单平台
  • 上海网站建设推广简单的网页设计源代码
  • 佛山网站建设推广拓客渠道有哪些
  • 科技成果谷歌seo搜索引擎下载
  • 怎么用链接进自己做的网站吗seo专员是什么意思
  • 网站规划与开发技术专业平台优化是指什么
  • 做网站的思路咸宁网站seo
  • 网站开发文献综述爱站seo
  • html网站标签网络营销模式包括哪些
  • 校园网网站建设费用网站开发公司排行榜
  • 社科联网站建设企点qq
  • 网站建设需要的人员北京seo推广外包
  • 朝阳网站建设 百子湾传统营销与网络营销的整合方法
  • 上海 餐饮网站建设优化师培训机构
  • 域名 空间 网站咨询公司
  • 做网站html和asp福州关键词优化平台
  • 公司网站封面怎么做百度贴吧热线客服24小时
  • 成都网站建设培训学校淘宝关键词排名是怎么做的
  • wordpress手机版安装seo工具
  • 站酷网官网青岛百度整站优化服务
  • wordpress角色模板福州短视频seo机会
  • 丽江市建设局官方网站营销型高端网站建设