leetcode7.8 三个有序数组的交集 最小元素各数位之和

leetcode7.8 三个有序数组的交集 最小元素各数位之和_第1张图片
有序表 建议用二分查找,图省事用了一般的查找

class Solution {
public:
    vector<int> arraysIntersection(vector<int>& arr1, vector<int>& arr2, vector<int>& arr3) {
        int i = 0, j = 0, k = 0;
        vector<int> result;
        while(i < arr1.size() && j < arr2.size() && k < arr3.size()){
            if(arr1[i] == arr2[j] && arr1[i] == arr3[k]){
                result.push_back(arr2[j]);
                i++;
                j++;
                k++;
            }
            else if(arr1[i] <= arr2[j] && arr1[i] <= arr3[k])  i++;
            else if(arr2[j] <= arr3[k]) j++;
            else k++;              
        }
        return result;
    }
};

最小元素各数位之和

给你一个正整数的数组 A。

然后计算 S,使其等于数组 A 当中最小的那个元素各个数位上数字之和。

最后,假如 S 所得计算结果是 奇数 的请你返回 0,否则请返回 1。

示例 1:

输入:[34,23,1,24,75,33,54,8]
输出:0
解释:
最小元素为 1,该元素各个数位上的数字之和 S = 1,是奇数所以答案为 0。
示例 2:

输入:[99,77,33,66,55]
输出:1
解释:
最小元素为 33,该元素各个数位上的数字之和 S = 3 + 3 = 6,是偶数所以答案为 1。

class Solution {
public:
    int sumOfDigits(vector<int>& A) {
        int min = A[0];
        for(int i = 1; i < A.size(); i++){
            if(A[i] < min) min = A[i];
        }
        int sum = 0;
        while(min!=0){
            sum+=(min%10);
            min/=10;
        }
        return sum%2==0 ? 1 : 0;
    }
};

学习了别人的写法 比较加赋值一步到位 min_val = min(min_val, A.at(i));

你可能感兴趣的:(Leetcode,C/C++)