【算法刷题】有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来

编程入门 行业动态 更新时间:2024-10-21 07:48:41

【算法刷题】有人相爱,有人夜里开车看海,有人leetcode第一题<a href=https://www.elefans.com/category/jswz/34/1735951.html style=都做不出来"/>

【算法刷题】有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来

文章目录

  • 1. 两数之和
    • 方法1:暴力 -O(N^2)
    • 方法2:哈希表

题目标题是copy官网评论第一条的啦~觉得很有趣就用来当标题了!侵权删

1. 两数之和

/


方法1:暴力 -O(N^2)

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int i = 0;int j = 0;vector<int> ans;for(int i = 0;i<nums.size();i++){//j从i+1位置开始找for(int j = i+1;j<nums.size();j++){//寻找目标值targetif(nums[i]+nums[j] == target){ans.push_back(i);ans.push_back(j);break;}}}return ans;}
};

方法2:哈希表

使用map,key-value为:元素值-下标
遍历到i下标位置的元素x,先查找map中是否含target-x这个元素

  • 如果有:那么x + target-x = target, 返回此时i位置和此时map中该元素的第二个成员
  • 如果没有:就把当前{i,x}新插入到map中,为后序寻找做准备
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {map<int,int> m;//值nums[i]- 下标ivector<int> v;//存放结果for(int i = 0;i<nums.size();i++){//当前元素nums[i]//在map中查找是否有target-nums[i]这个值auto it = m.find(target-nums[i]);if(it != m.end()) {//如果找到了,返回当前i位置和map中此元素第二个成员的下标v.push_back(it->second);v.push_back(i);break;}//没有找到,在map中插入键值对:当前元素值 - 当前元素下标m.insert(make_pair(nums[i],i));   //没有找到 -> 插入当前元素}return v;//返回空容器}
};

更多推荐

【算法刷题】有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来

本文发布于:2024-02-26 10:33:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1702188.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:都做   算法   看海   夜里   不出来

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!