1. 程式人生 > 實用技巧 >簡單題的艱難雙百1630. 等差子陣列--vector的鍋

簡單題的艱難雙百1630. 等差子陣列--vector的鍋

emmmmm本來寫的好好的,,

 1 class Solution {
 2 public:
 3     bool check(vector<int>& nums, int l,int r){
 4         vector<int> temp;
 5         for(int i=l,j=0;i<=r;i++,j++){
 6             temp[j]=(nums[i]);
 7         }
 8         sort(temp.begin(),temp.end());
 9         int len=temp.size();
10 int flag=temp[1]-temp[0]; 11 for(int j=1;j<len;j++){ 12 if(temp[j]-temp[j-1]!=flag) 13 return false; 14 15 } 16 return true; 17 } 18 vector<bool> checkArithmeticSubarrays(vector<int>& nums, vector<int>& l, vector<int
>& r) { 19 vector<bool> ans; 20 int size=l.size(); 21 for(int i=0;i<size;i++){ 22 ans[i]=(check(nums,l[i],r[i])); 23 } 24 return ans; 25 26 27 } 28 };

但是它一直啥都執行不出來

就RE了

後來問了dl,發現這個vector,如果你不用push_back它是不會分配空間的,

,,,,,,我今年藍橋杯也這麼寫的QAQ不錯,還有進步空間嗚嗚嗚

改:

class Solution {
public:
    bool check(vector<int>& nums, int l,int r){
        vector<int> temp;
        for(int i=l;i<=r;i++){
            temp.push_back(nums[i]);
        }
        sort(temp.begin(),temp.end());
        int len=temp.size();
       int flag=temp[1]-temp[0];
        for(int j=1;j<len;j++){
            if(temp[j]-temp[j-1]!=flag)
            return false;
            
        }
        return true;
    }
    vector<bool> checkArithmeticSubarrays(vector<int>& nums, vector<int>& l, vector<int>& r) {
        vector<bool> ans;
        int size=l.size();
        for(int i=0;i<size;i++){
            ans.push_back(check(nums,l[i],r[i]));
        }
        return ans;


    }
};