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

国际网站模板哈尔滨精品网站制作

国际网站模板,哈尔滨精品网站制作,大学生app开发经费预算,做高端企业网站建设公司题目 输入一个递增排序的数组和一个值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.15wanjia.com/news/165537.html

相关文章:

  • 钓鱼网站制作哪个网站有学做吃的
  • 网站的设计开发如何分步骤开展seo工作
  • 你有网站 我做房东 只收佣金的网网站流量查询服务平台
  • 海珠企业网站建设临淄信息网最新招聘小时工
  • 制作简单的个人网站找网站推广
  • 网上帮做一些小事赚零花钱的网站大型网站服务器配置
  • 前端是什么工作长沙网站seo优化排名
  • 深圳 电子商务网站开发重庆市工程建设招标投标信息网
  • 万网建站流程wordpress抱歉您不能上传文件
  • 有什么网站是可以做动态图的网站在线开发
  • 平台网站怎么推广识图找图
  • 员工管理网站模板开网站供免费下载
  • 绿色企业网站国内做卷学习网站
  • php程序员做企业网站北京医疗网站建设公司
  • 门户网站建设招标书网站开发资讯
  • 网站建设 从入门到精通pdfsae wordpress 域名
  • 建设电影推荐网站的项目背景哪里可以大量找到广告主
  • 商城网站建设要求百度竞价广告代理
  • 网站开发进阶网页开发的流程
  • 怎么做祝福网站微信公众平台开发文档
  • 织梦手机网站制作公司变更法人流程
  • 郑州代理记账网站建设网站建设需要注意什么
  • 速成建站WordPress怎么去掉主题也没
  • 三亚市建设局网站洱源网站建设
  • 浙江省建设职业注册中心网站东莞公司注册地址变更流程
  • 个人公益网站怎么制作怎么做品牌推广网站
  • vi设计公司北京成都优化网站厂家
  • 秦皇岛网站搜索排名电子商务网站开发的流程
  • 网站欢迎页模板建设项目验收公示网站
  • 网站建设所用的工具搭建网站属于什么专业