• Product of Array Except Self


     1、Product of Array Except Self

     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 };

    2、Maximum Subarray

     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 };

    3、Maximum Product Subarray

     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 };
  • 相关阅读:
    Linux下GCC生成和使用静态库和动态库详解(二)
    make linux内核
    gdb
    GCC动态库和静态库混合使用
    gcc g++ Linux下动态库_静态库
    makefile
    linux线程函数大全
    C++ 中的插入迭代器以及其迭代器适配器
    gcc
    android ScrollView中嵌套GridView,ListView只显示一行的解决办法
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5541363.html
Copyright © 2020-2023  润新知