关关的刷题日记11——Leetcode 1. Two Sum 方法2、3
时间:2022-05-07
本文章向大家介绍关关的刷题日记11——Leetcode 1. Two Sum 方法2、3,主要内容包括关小刷刷题11 – Leetcode 1. Two Sum 方法2、3、方法3、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
关小刷刷题11 – Leetcode 1. Two Sum 方法2、3
方法2
方法2:先将数组进行排序,设置两个左右指针,若sum>target, 那么右指针左移,sum<target, 左指针右移。sum=target,对应元素的头尾指针就是所求结果。但是有个问题是这时候得到的头尾指针是元素排序后对应的头尾指针,咱们想求的是元素排序前对应的头尾指针,所以一开始要把原来的数组拷贝一份,然后遍历数组,找到对应下标值。时间复杂度为O(nlogn)的方法,还用了额外空间,貌似也不是很好的方法,但是如果数组已经排好序了这种方法就很赞。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>output;
vector<int>temp=nums;
sort(nums.begin(), nums.end());
int a=0, b=0;
for(int i=0, j=nums.size()-1; i<j;)
{
if(nums[i]+nums[j]>target)
j--;
else if(nums[i]+nums[j]<target)
i++;
else
{
a=nums[i];
b=nums[j];
break;
}
}
for(int i=0; i<temp.size(); i++)
{
if(temp[i]==a || temp[i]==b)
output.push_back(i);
}
return output;
}
};
方法3
方法3:用哈希表,key存数组元素,value存对应的下标值,遍历数组,当查找到target-nums[i]时,此时元素的下标和target-nums[i]的value值就是所求结果。时间复杂度为O (n)的方法,用了额外空间。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>output;
unordered_map<int, int>m;
for(int i=0;i<nums.size();i++)
{
if(m.find(target-nums[i])!=m.end())
{
output.push_back(m[target-nums[i]]);
output.push_back(i);
break;
}
else
m[nums[i]]=i;
}
return output;
}
};
保护好自己,成为更好的人,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。
- 程序实现下载文件或者打开文件
- VisualTreeHelper
- Linux下路由配置梳理
- Gitlab利用Webhook实现Push代码后的jenkins自动构建
- db4o 7.4 for .net3.5试用手记
- JQuery笔记(五) 圆角表格的效果
- tomcat内存溢出问题记录
- 微信小程序开放 Wi-Fi、NFC 连接能力,未来可直接刷地铁?
- 2017奇葩机器人大盘点:Sophia想生孩子,Atlas后空翻,贝佐斯骑高达
- silverlight:分享一个不错的自定义布局CollectionFlow(可用于制作相册的哦!)
- 无法取得ConnectionSettings的问题
- DataTable,List去重复记录的方法
- Uploadify的一点总结
- 自动驾驶时代,中国移动要以怎样的姿势进入?
- 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 数组属性和方法
- 使用npy转image图像并保存的实例
- php实现有序数组旋转后寻找最小值方法
- 基于python实现音乐播放器代码实例
- PHP实现微信对账单处理
- Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
- PHP Include文件实例讲解
- ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
- Python Switch Case三种实现方法代码实例
- PHP正则表达式笔记与实例详解
- php实现微信分享朋友链接功能
- python交互模式基础知识点学习
- 浅析Python 抽象工厂模式的优缺点
- 基于PyTorch的permute和reshape/view的区别介绍
- Laravel配置全局公共函数的方法步骤
- PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解