栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode1. 两数之和

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode1. 两数之和

暴力求解:

class Solution {
public:
    vector twoSum(vector& 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 twoSum(vector& nums, int target) {
        mapa;
        vectorb(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;
    };
};

遇到问题:

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

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

vector twoSum(vector& nums, int target)
    向vector中添加元素
    成员函数:push_back()
    eg;
string word;
vector text;
while (cin >> word)
{
	text.push_back(word);
}

    其他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;
    <,<=,>,>= 以字典顺序进行比较

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

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号