一、Product of Array Except Selfspa
1 class Solution { 2 public: 3 vector<int> productExceptSelf(vector<int>& nums) { 4 vector<int> output(nums.size(), 1); 5 if(nums.empty()) 6 return output; 7 int left=1, right=1; 8 for(int i=0; i<nums.size(); i++) 9 { 10 output[i] = left; 11 left = left * nums[i]; 12 } 13 for(int i=nums.size()-1; i>=0; i--) 14 { 15 output[i] = right * output[i]; 16 right = right * nums[i]; 17 } 18 19 return output; 20 } 21 };
二、Maximum Subarraycode
1 class Solution { 2 public: 3 int maxSubArray(vector<int>& nums) { 4 if(nums.empty()) 5 return 0; 6 vector<int> local(nums.size(), 0); 7 vector<int> global(nums.size(), 0); 8 local[0]= nums[0]; 9 global[0] = nums[0]; 10 for(int i=1; i<nums.size(); i++) 11 { 12 local[i] = max(local[i-1]+nums[i], nums[i]); 13 global[i] = max(local[i], global[i-1]); 14 } 15 16 return global[nums.size()-1]; 17 } 18 };
1 class Solution { 2 public: 3 int maxSubArray(vector<int>& nums) { 4 if(nums.empty()) 5 return 0; 6 int sum = 0; 7 int maxsum =nums[0]; 8 for(int i=0; i<nums.size(); ++i) 9 { 10 if(nums[i]+sum< nums[i]) 11 sum = 0; 12 sum += nums[i]; 13 if(maxsum < sum) 14 maxsum = sum; 15 16 } 17 return maxsum; 18 } 19 };
三、Maximum Product Subarrayblog
1 class Solution { 2 public: 3 int maxProduct(vector<int>& nums) { 4 if(nums.empty()) 5 return 0; 6 int max_l = nums[0]; 7 int min_l = nums[0]; 8 int max_g = nums[0]; 9 for(int i=1; i<nums.size(); i++) 10 { 11 int tmp_max = max_l; 12 max_l = max(max(tmp_max*nums[i], nums[i]), min_l*nums[i]); 13 min_l = min(min(tmp_max*nums[i], nums[i]), min_l*nums[i]); 14 max_g = max(max_g, max_l); 15 } 16 return max_g; 17 } 18 };