zoukankan      html  css  js  c++  java
  • std::vector的下标访问和迭代器访问的效率

    结论:下标访问效率更高。

    迭代器访问:

    用时:超过1600ms

    class Solution {
    public:
        vector<int> fairCandySwap(vector<int>& A, vector<int>& B) 
        {
           
           int sumA=0;
           for(int i=0;i<A.size();i++)
           {
               sumA+=A[i];
           }
        
           
           int sumB=0;
           for(int i=0;i<B.size();i++)
           {
               sumB+=B[i];
           }
    
            int diff=sumA-sumB;
            //cout<<"diff="<<diff<<endl;
            vector<int> ret;
            bool isSwap=false;
            for(int a=0;a<A.size();a++)
            {
                for(int b=0;b<B.size();b++)
                {//cout<<"a-b="<<*itera-*iterb<<endl;
                    if(diff==2*(A[a]-B[b]))
                    {                    
                        ret.push_back(A[a]);
                        ret.push_back(B[b]);
                        isSwap=true;
                        break;
                    }
                }
                if(isSwap==true)
                    break;
    
    
            }  
            return ret;
        }   
    };
    下标访问:
    用时:952ms
    class Solution {
    public:
        vector<int> fairCandySwap(vector<int>& A, vector<int>& B) 
        {
           
           int sumA=0;
           for(int i=0;i<A.size();i++)
           {
               sumA+=A[i];
           }
        
           
           int sumB=0;
           for(int i=0;i<B.size();i++)
           {
               sumB+=B[i];
           }
    
            int diff=sumA-sumB;
            //cout<<"diff="<<diff<<endl;
            vector<int> ret;
            bool isSwap=false;
            for(int a=0;a<A.size();a++)
            {
                for(int b=0;b<B.size();b++)
                {//cout<<"a-b="<<*itera-*iterb<<endl;
                    if(diff==2*(A[a]-B[b]))
                    {                    
                        ret.push_back(A[a]);
                        ret.push_back(B[b]);
                        isSwap=true;
                        break;
                    }
                }
                if(isSwap==true)
                    break;
    
            }  
            return ret;
        }   
    };
     
  • 相关阅读:
    HashMap
    java反射
    arraylist和linkedlist区别
    int和Integer的区别
    java 数组排序并去重
    矩阵链乘法问题
    找零问题
    硬币收集问题
    最大借书量问题
    钢条切割问题
  • 原文地址:https://www.cnblogs.com/briskzou/p/12048215.html
Copyright © 2011-2022 走看看