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

网站建设企最新清远发布

网站建设企,最新清远发布,深圳网站建设 设计科技有限公司,公司网站建设找谁做给你一个下标从 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.ysxn.cn/news/3473.html

相关文章:

  • 同ip网站是怎么做的自媒体营销的策略和方法
  • 做网站整理信息的表格seo的排名机制
  • 湖北企业模板建站开发完整的社群营销方案
  • 网站开发所涉及的技术发广告去哪个平台
  • 开不锈钢公司怎么做网站桔子seo网
  • 凡科建站加盟靠谱吗百度搜索热度排名
  • 外贸网站建设wordpress个人网页制作成品欣赏
  • 做网站每一步的是什么全案网络推广公司
  • 微信小程序如何推广seo网站优化技术
  • 邹城网站建设zczwxx如何把网站推广出去
  • 陕西公司网站建设网推和地推的区别
  • 素材解析网站搭建哪有恶意点击软件买的
  • wordpress论坛实例seo网络优化是什么意思
  • 佛山企业网站制作公司网络seo公司
  • 新手网站设计定价最好用的搜索引擎排名
  • 网站的搜索功能一般怎么做重庆seo顾问服务
  • 汕尾住房和建设局网站软文范例大全500字
  • 做网站发现是传销免费产品推广软件
  • 江门外贸网站建设页面优化的方法有哪些
  • 免费博客网站有哪些北京网站优化方案
  • 合肥网站建设方案优化日本产品和韩国产品哪个好
  • 网站建设 目的建站开发
  • dw做网站的导航栏百度快速收录权限域名
  • 做网站的公司有武汉网站提升排名
  • 学校网站开发程序社群营销活动策划方案
  • ssh做电商 网站免费二级域名分发网站源码
  • 用数据库做动态网站怎么提高百度搜索排名
  • 南京 推广 网站建设seo优化网站推广全域营销获客公司
  • 海淀区城乡建设委员会官方网站百度网络优化
  • 怎么在家做网站网络营销实训个人总结