zoukankan      html  css  js  c++  java
  • c++ map 中的 count

    今天在leetcode写了一个题  两数之和

    这是AC代码

    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target)
        {
            vector<int> a;
            map<int,int> p;
            for (int i=0;i<nums.size();i++)
                p[nums[i]]=i;
            map<int,int>::iterator z;
            if (p.count(-6)==0) cout<<"fk"<<endl;
            for (int i=0;i<nums.size();i++)
                if (p.count(target-nums[i])==1 && p[target-nums[i]]!=i)
                {
                    cout<<p.count(target-nums[i])<<endl;
                    cout<<i<<" "<<target-nums[i]<<endl;
                    a.push_back(i);
                    a.push_back(p[target-nums[i]]);
                    break;
                }
            return a;
        }
    };

    这是WA代码

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

    发现了一个map count的问题

    他但凡只要使用过p[a] ,不管有没有赋值,都默认已经有这个元素了,倘若没有赋值,则为0

  • 相关阅读:
    MyBatis的Mapper接口以及Example的实例函数及详解
    数据存储
    广播
    java线程复习3(线程的中断)
    java线程复习2(获取和设置线程信息)
    java线程复习1(线程创建)
    最好的启动方式
    工厂模式
    欧几里得算法
    组合数打表
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/15273042.html
Copyright © 2011-2022 走看看