【LeetCode】Two Sum II - Input array is sorted
时间:2019-09-14
本文章向大家介绍【LeetCode】Two Sum II - Input array is sorted,主要包括【LeetCode】Two Sum II - Input array is sorted使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【Description】
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:
- Your returned answers (both index1 and index2) are not zero-based.
- You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
【AC code】
一、暴力法 时间复杂度:O(n^2)
1 class Solution { 2 public int[] twoSum(int[] numbers, int target) { 3 int arrlen = numbers.length; 4 for (int i = 0; i < arrlen - 1; i++) { 5 for (int j = i + 1; j < arrlen; j++) { 6 if (numbers[i] + numbers[j] == target) return new int[]{i + 1, j + 1}; 7 } 8 } 9 return new int[]{}; 10 } 11 }
二、二分查找法 时间复杂度:O(nlogn)
1 class Solution { 2 public int[] twoSum(int[] numbers, int target) { 3 int arrlen = numbers.length; 4 for (int i = 0; i < arrlen; i++) { 5 int left = i + 1, right = arrlen - 1; 6 while (left <= right) { 7 int mid = left + (right - left) / 2; 8 int tmp = numbers[i] + numbers[mid]; 9 if (tmp > target) right = mid - 1; 10 else if (tmp < target) left = mid + 1; 11 else return new int[]{i + 1, mid + 1}; 12 } 13 } 14 return new int[]{}; 15 } 16 }
三、双索引法 时间复杂度:O(n)
1 class Solution { 2 public int[] twoSum(int[] numbers, int target) { 3 int left = 0, right = numbers.length - 1; 4 while (left < right) { 5 int tmp = numbers[left] + numbers[right]; 6 if (tmp == target) return new int[]{left + 1, right + 1}; 7 else if (tmp > target) right--; 8 else left++; 9 } 10 return new int[]{}; 11 } 12 }
原文地址:https://www.cnblogs.com/moongazer/p/11519959.html
- 分布式唯一ID生成器Twitter 的 Snowflake idworker java版本
- 使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试
- 高并发分布式系统中生成全局唯一Id汇总
- ZooKeeper 可视化监控 zkui
- 关于RBAC(Role-Base Access Control)的理解
- Spring Boot 中使用 Kafka
- 如何评价一段代码
- java系统高并发的解决方案
- Spring Boot 中使用 Redis
- 使用 Jedis 连接操作 Redis
- 浅析ReDoS的原理与实践
- 使用 Executors,ThreadPoolExecutor,创建线程池,源码分析理解
- CentOS+Nginx+Tomcat搭建高性能负载均衡集群
- Java 四种线程池的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 聊聊dubbo-go的tracingFilter
- JDBC - 第一天
- JavaSE - 排序算法
- JavaSE - 多态的本质
- Result Maps collection does not contain value for XXX 错误
- 当端口被占用如何kill占用端口的进程
- 将本地仓库同步到Github上的远程仓库
- 毫不留情地揭开 ArrayList 和 LinkedList 之间的神秘面纱
- 关于void QProcess::start参数问题的解决
- Python格式化输出
- 多线程 - 生产者消费者模式
- TCP的三次握手和四次挥手
- Springboot异常处理
- Excel实战技巧84: 让形状生动起来
- 利用Python进行组合数计算