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

国外的有名的网站中国医疗器械网官网

国外的有名的网站,中国医疗器械网官网,网站欢迎页面设计,南部县网站建设公司题目 输入一个递增排序的数组和一个值k,请问如何在数组中找出两个和为k的数字并返回它们的下标?假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。例如,输入数组[1,2,4,6&…

题目

输入一个递增排序的数组和一个值k,请问如何在数组中找出两个和为k的数字并返回它们的下标?假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。例如,输入数组[1,2,4,6,10],k的值为8,数组中的数字2与6的和为8,它们的下标分别为1与3。

分析

存在时间复杂度是O(n)、空间复杂度是O(1)的解法。我们用两个指针P1和P2分别指向数组中的两个数字。指针P1初始化指向数组的第1个(下标为0)数字,指针P2初始化指向数组的最后一个数字。如果指针P1和P2指向的两个数字之和等于输入的k,那么就找到了符合条件的两个数字。如果指针P1和P2指向的两个数字之和小于k,那么我们希望两个数字的和再大一点。由于数组已经排好序,因此可以考虑把指针P1向右移动。因为在排序数组中右边的数字要大一些,所以两个数字的和也要大一些,这样就有可能等于输入的数字k。同样,当两个数字的和大于输入的数字k时,可以把指针P2向左移动,因为在排序数组中左边的数字要小一些。

public class Test {public static void main(String[] args) {int[] nums = {1, 2, 4, 6, 10};int[] result = towSum(nums, 8);for (int res : result) {System.out.println(res);}}public static int[] towSum(int[] numbers, int target) {int i = 0;int j = numbers.length - 1;while (i < j && numbers[i] + numbers[j] != target) {if (numbers[i] + numbers[j] < target) {i++;}else {j--;}}return new int[] {i, j};}
}
http://www.yayakq.cn/news/324532/

相关文章:

  • 直播是网站怎么做杰奇网站地图插件
  • 做国际网站有补贴吗PHP是做网站最好的
  • 苏州360推广网站建设南宁建站服务公司
  • 哪个网站可以做360度评估开网页死机
  • 做vi网站建设学校网站的作用
  • 网站建设流程咨询陕西建设网官网证查询
  • 滨州做网站的公司别人建的网站怎么修改代码
  • 网站后台权限管理与众不同的网站
  • 图跃企业网站建设网站建设的策划文案
  • 电商建设网站连锁加盟网站制作
  • 有网站怎么做下载直链wordpress用户排行榜
  • 网站备案 网站名称中国互联网协会发起者包括
  • 自己网站怎么推广制作手机网站什么软件下载
  • 帝国网站模板下载如何注册一个网站
  • 天津开发区建设工程管理中心网站asp网站路径
  • 怎样做网站导购wordpress 显示文章内容
  • 重庆网站建设重庆建个大型网站需
  • iss怎么做网站营销型企业网站建设应遵守的原则
  • 做模版网站济宁网站建设第一品牌
  • 网站后台的制作网站做app的软件有哪些
  • 网站建设和软件开发国外手机网站欣赏
  • 织梦做的网站有点慢龙游住房和城乡建设局网站
  • 做汽车拆解视频网站百度宣传推广
  • 学做甜点的网站门户网站排行榜
  • 浏览网站内下载文件百度开户推广多少钱
  • 南京制作网站要多少钱软件外包开发保密协议
  • 提供网站建设框架本地搭建多个网站
  • 一个完整的网站设计需要的技术北京做网站好的公司
  • ie10网站后台无法编辑可以看任何东西的浏览器
  • 手机网站建站cms网站建设可以在里面装东西