1. 程式人生 > >leetcode關於數組的問題

leetcode關於數組的問題

miss kkk mis 最小 bar tps span 元素 lee

  • [Leetcode] 628. 三個數的最大乘積

解題思路:

這個一開始我是沒想到思路的(除了遍歷),因為有正負號的問題,後來看了一下別人的思路然後自己寫的,思路是這樣的:

三個數乘積最大只能有兩種情況,

一種是三個最大正數直接乘起來最大,

另一種就是兩個最小的負數乘起來再乘以一個最大的正數。

第一步:

跟前面的那個414.第三大的數一個思路,遍歷找到最大的三個正數和最小的兩個數。

第二步:

比較最大三個數的乘積和兩個最小數乘以最大數的乘積誰大就返回誰。
  • leetcode414-第三大的數

解釋: 註意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。

返回第三大且又是唯一出現的數,這裏涉及到了排序和去重,所以想到用set來做,因為set是自動去重並升序的容器,但有一點,訪問set集合裏的元素只能通過叠代器的形式進行訪問,而不能通過下標。
  • LeetCode 238 計算數組除自己外的元素乘積

    class Solution {
    public:
        vector<int> productExceptSelf(vector<int>& nums) {
            int n = nums.size();
            vector<int> res(n, 1); // res有n個元素,值為1
            if(n <= 1){
                return nums;
            }
            
for(int i = 1; i < n; i++){ // res={1, n0, n0n1, n0n1n2}; res[i] = res[i-1] * nums[i-1]; } int right = 1; for(int i = n-2; i >= 0; i--){ right *= nums[i+1]; // right = n3,n3n2,n3n2n1 res[i] = res[i]*right; }
return res; } };
  • LeetCode:152_Maximum Product Subarray | 最大乘積連續子數組 | Medium

leetcode關於數組的問題