array 2 map

来源:互联网 发布:fanuc数控系统编程代码 编辑:程序博客网 时间:2024/05/05 07:44

Longest Consecutive Sequence

差一点就可以想到了,想到一个数,然后他的左右值,想到map但是,没想到一直查找下去,以为添加并修改就可以了,结果不能保证连续性,实际上,是每次都计算当前值得长度,并保存最大的长度。

class Solution {public:    int longestConsecutive(vector<int> &num) {    if(num.empty())return -1;map<int,bool> usedmap;    for(auto i :num)        usedmap[i] = false;        int longest = 0;        for(auto i : num)    {        if(usedmap[i])            continue;        int length = 1;                usedmap[i] = true;        for(int j = i + 1; usedmap.end() != usedmap.find(j); ++ j )        {            usedmap[j] = true;            ++ length;        }                for(int j = i - 1; usedmap.end() != usedmap.find(j); -- j )        {            usedmap[j] = true;            ++ length;        }                longest = max(longest,length);    }    return longest;    }};


Two Sum

 

回头看之前做的twosum发现自己的思路就很怪,干嘛要排序呢,思路方向错了,就错得很离谱,做出的结果也复杂

class Solution {public:    vector<int> twoSum(vector<int> &numbers, int target) {        map<int,int> mymap;vector<int> index;int index1,index2;index1 = index2 = 0;for(vector<int>::size_type i = 0; i != numbers.size(); ++ i ){if(mymap.empty())mymap[numbers[i]] = i;else{if(mymap.end() != mymap.find(target - numbers[i])){index1 = mymap.find(target - numbers[i])->second+1;index2 = i+1;break;}elsemymap[numbers[i]] = i;}}index.push_back(index1);index.push_back(index2);return index;    }};


0 0
原创粉丝点击