• LeetCode剑指Offer03


    题意

    输出任意一个重复的数字即可,map判断就行。

    注意

    关于调用C++ public、protected、private中的方法的写法:https://blog.csdn.net/gxgalaxy/article/details/81259083

    提交AC代码写法

    注意:需要 return 答案 ,不能直接 cout 输出然后 break ,会报错。

    class Solution
    {
    public:
        int findRepeatNumber(vector<int>&nums)
        {
            map<int,int> mp;
            for(auto&i:nums)
                mp[i]++;
            for(auto&i:mp)
            {
                if(i.second>=2)
                    return i.first;
            }
            return 0;
        }
    };
    

    本地调试代码写法一

    关于调用C++ public、protected、private中的方法的写法:https://blog.csdn.net/gxgalaxy/article/details/81259083

    在主函数中调用 Solution 中的 findRepeatNumber 方法:

    #include<iostream>
    #include<stdio.h>
    #include<string>
    #include<algorithm>
    #include<map>
    #include<stack>
    #include<queue>
    #include<vector>
    using namespace std;
    typedef long long ll;
    #define inf 0x3f3f3f3f
    const int N=10010;
    
    vector<int> v;
    
    class Solution
    {
    public:
        int findRepeatNumber(vector<int>&nums)
        {
            map<int,int> mp;
            for(auto&i:nums)
                mp[i]++;
            for(auto&i:mp)
            {
                if(i.second>=2)
                    return i.first;
            }
            return 0;
        }
    };
    
    int main()
    {
        // v=[2,3,1,0,2,5,3]
        v.push_back(2);
        v.push_back(3);
        v.push_back(1);
        v.push_back(0);
        v.push_back(2);
        v.push_back(5);
        v.push_back(3);
        Solution solution1;
        cout<<solution1.findRepeatNumber(v)<<endl;
    //    cout<<findRepeatNumber(v)<<endl;
        return 0;
    }
    

    本地调试代码写法二

    #include<iostream>
    #include<stdio.h>
    #include<string>
    #include<algorithm>
    #include<map>
    #include<stack>
    #include<queue>
    #include<vector>
    using namespace std;
    typedef long long ll;
    #define inf 0x3f3f3f3f
    const int N=10010;
    
    vector<int> v;
    
    //class Solution
    //{
    //public:
        int findRepeatNumber(vector<int>&nums)
        {
            map<int,int> mp;
            for(auto&i:nums)
                mp[i]++;
            for(auto&i:mp)
            {
                if(i.second>=2)
                    return i.first;
            }
            return 0;
        }
    //};
    
    int main()
    {
    //    v=[2,3,1,0,2,5,3]
        v.push_back(2);
        v.push_back(3);
        v.push_back(1);
        v.push_back(0);
        v.push_back(2);
        v.push_back(5);
        v.push_back(3);
        cout<<findRepeatNumber(v)<<endl;
    
        return 0;
    }
    

    vector在本题中的问题

    1. 方法中是 int findRepeatNumber(vector<int>&nums) ,主函数传参的时候需要 solution1.findRepeatNumber(v) ,默认v前面会有 & ,不需要自己加 &*

    2. 如果想把题目样例([2,3,1,0,2,5,3])放到vector中,不能直接像写数组一样直接v=xxx,有两种写法:

      • 写法一:直接把每个数单独push_back进去:

        v.push_back(2);
        v.push_back(3);
        v.push_back(1);
        v.push_back(0);
        v.push_back(2);
        v.push_back(5);
        v.push_back(3);
        
      • 写法二:先放数组里,再放到vector中:

        int a[10]={2,3,1,0,2,5,3} ;
        vector<int>v(n,n+7);  //将数组a的前7个元素作为向量v的初值
        vector<int>v(&n[0],&n[6]); //将a[0]~a[6]范围内的元素作为向量v的初值
        
  • 相关阅读:
    男子头部胀痛案
    摩这些穴位可以对付突发的疾病
    跟师学习时的几个经验方
    黄褐斑良方--- 疏肺散斑汤
    食积咳嗽的特点
    牙痛用药口决(来源于网络暂未验证)
    20多年脚气起泡脱皮瘙痒外洗方治验案
    起死回生通关散
    腰突辩治心得(付济华)
    战痘良方--付济华
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14541715.html
Copyright © 2020-2023  润新知