剑指 Offer 57. 和为s的两个数字

Offer_57

题目详情

使用二分法

package com.walegarrett.offer;

/**
* @Author WaleGarrett
* @Date 2021/2/10 18:57
*/ /**
* 题目详情:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。
* 如果有多对数字的和等于s,则输出任意一对即可。
*/ import java.util.ArrayList;
import java.util.Arrays; /**
* 解法一:使用二分法查找法
*/
public class Offer_57 {
public int[] twoSum(int[] nums, int target) {
int len = nums.length;
boolean flag = false;
int[] result = new int[2];
int i,index=0;
for(i=0; i<len; i++){
int now = nums[i];
int another = target-now;
int left = i+1,right = len;
if(left == len)
break;
index = Arrays.binarySearch(nums, left, right, another);
if(index >= 0){
flag = true;
break;
}
}
if(flag)
return new int[]{nums[i],nums[index]};
return new int[0];
}
}

使用双指针法

/**
* 解法二:使用双指针法
*/
class Offer_57_1 {
public int[] twoSum(int[] nums, int target) {
int len = nums.length;
int i = 0, j=len-1;
while(i<j){
int sum = nums[i] + nums[j];
if(sum < target)
i++;
else if(sum > target)
j--;
else return new int[]{nums[i], nums[j]};
}
return new int[0];
}
}

复杂度分析

  • 时间复杂度 O(N) : N 为数组 nums 的长度;双指针共同线性遍历整个数组。
  • 空间复杂度 O(1) : 变量 i, j 使用常数大小的额外空间。

最新文章

  1. markdown简要说明显示样式
  2. AWS EC2首次使用VPS
  3. ubuntu16.04安装jdk,tomcat
  4. 自增序号,而且默认变量就是$i,也就是说在你的volist标签之内,可以直接使用$i
  5. android Tab 类型切换界面
  6. AngularJs——grunt神器的使用
  7. php使用过滤器filter_var轻松验证邮箱url和ip地址等
  8. chrome下float元素下input选中内容bug
  9. dev/null和dev/zero区别 以及换回设备(loopback device)
  10. JavaScript使用需要注意的细节
  11. java日期处理总结(二)
  12. 基于CPS变换的尾递归转换算法
  13. xml读取一行数据
  14. Git详解之二:Git基础
  15. BSGS算法(大步小步算法)
  16. 2018-2019-2 20175329许钰玮 实验二《Java面向对象程序设计》实验报告
  17. placeholder效果
  18. JS转换HTML转义符,编码及解码
  19. heartbeat 非联网安装(通过配置本地yum文件库安装heartbeat)
  20. UML建模——用例图(Use Case Diagram)

热门文章

  1. Codeforces Round #683 (Div. 2, by Meet IT) D. Catching Cheaters (DP)
  2. 5.2 spring5源码--spring AOP源码分析三---切面源码分析
  3. dp的小理解
  4. JavaScript预编译过程理解
  5. K8s(一)----容器编排工具基础概念
  6. js 构造函数 &amp; 静态方法 &amp; 原型 &amp; 实例方法
  7. WebVR &amp; CSS 3D &amp; WebGL
  8. React Native &amp; CodePush &amp; App Center
  9. nodejs 显示进度条插件
  10. Dart: 解析html字符串