Leetcode1. 两数之和

暴力求解:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int i, j;
        for (i = 0; i < nums.size()-1; i++) {
            for (j = i+1; j < nums.size(); j++) {
                if (nums[i] + nums[j] == target) {
                    return { i,j };
                }
            }
        }
         return {};
    };
};

哈希表:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int>a;
        vector<int>b(2, -1);
        for (int i = 0; i < nums.size(); i++) {
            if (a.count(target - nums[i]) > 0) {
                b[0] = a[target - nums[i]];
                b[1] = i;
                break;
            }
            a[nums[i]] = i;
        }
        return b;
    };
};

遇到问题:

  1. vector<存放对象的类型> 命名
    eg:
  vector<int> twoSum;
  1. 定义和初始化vector对象
    eg:
vector<int> v(n,val);

即v中包括n个重复的元素,每个元素都是val

vector<int> twoSum(vector<int>& nums, int target)
  1. 向vector中添加元素
    成员函数:push_back()
    eg;
string word;
vector<string> text;
while (cin >> word)
{
	text.push_back(word);
}
  1. 其他vector常用操作
    v.empty(); 若vector中不含元素,返回真;否则返回假
    v.size(); 返回v中元素个数
    v.[n]; 返回v中第n个位置上元素的引用
    v1 = v2; 用v2中元素的拷贝替换v1中的元素
    v1 = {a,b,c…};用列表中的元素拷贝替换v1中的元素
    v1 == v2; v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同
    v1 != v2;
    <,<=,>,>= 以字典顺序进行比较

  2. 报错error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
    }
    因为if有返回值 没有写else了
    详细参考错误之处与如何改正

  3. 哈希查找的时间复杂度为 O(1)

  4. map提供一个很常用的功能,那就是提供key-value的存储和查找功能

  5. .count() 返回指定元素出现的次数, (帮助评论区理解: 因为key值不会重复,所以只能是1 or 0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈笑死哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值