Coding Exercise: Sum of Digits in the Minimum Number

  • 时间:2020-09-25 11:32:47
  • 分类:网络文摘
  • 阅读:84 次

Given an array A of positive integers, let S be the sum of the digits of the minimal element of A. Return 0 if S is odd, otherwise return 1.

Example 1:
Input: [34,23,1,24,75,33,54,8]
Output: 0

Explanation:
The minimal element is 1, and the sum of those digits is S = 1 which is odd, so the answer is 0.

Example 2:
Input: [99,77,33,66,55]
Output: 1

Explanation:
The minimal element is 33, and the sum of those digits is S = 3 + 3 = 6 which is even, so the answer is 1.

Note:

  • 1 <= A.length <= 100
  • 1 <= A[i].length <= 100

C++ min_element

Using min_element() in Modern C++, you can easily get the minimal element between two iterator ranges instead of writing a for loop. The third parameter is an optional one that you can provide the customize comparator.

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
    int sumOfDigits(vector<int>& A) {
//        int v = *min_element(begin(A), end(A), [](auto a, auto b) { return a < b; });
        int v = *min_element(begin(A), end(A));
        int r = 0;
        while (v > 0) {
            r += v % 10;
            v /= 10;
        }
        return 1 - r % 2;
    }
};
class Solution {
public:
    int sumOfDigits(vector<int>& A) {
//        int v = *min_element(begin(A), end(A), [](auto a, auto b) { return a < b; });
        int v = *min_element(begin(A), end(A));
        int r = 0;
        while (v > 0) {
            r += v % 10;
            v /= 10;
        }
        return 1 - r % 2;
    }
};

Python

Similarly, a little bit verbose (in Python3):

1
2
3
4
5
6
7
8
9
class Solution:
    def sumOfDigits(self, A: List[int]) -> int:
        x = min(A)
        S = 0
        while x > 0:
            S += (x % 10)
            x //= 10  # make sure the integer division
        #return 0 if ((S % 2) == 1) else 1
        return 1 - S % 2
class Solution:
    def sumOfDigits(self, A: List[int]) -> int:
        x = min(A)
        S = 0
        while x > 0:
            S += (x % 10)
            x //= 10  # make sure the integer division
        #return 0 if ((S % 2) == 1) else 1
        return 1 - S % 2

Alternatively, with one-liner in Python:

1
2
3
class Solution:
    def sumOfDigits(self, A: List[int]) -> int:
        return 1 - sum(map(int, str(min(A)))) % 2
class Solution:
    def sumOfDigits(self, A: List[int]) -> int:
        return 1 - sum(map(int, str(min(A)))) % 2

or:

1
2
3
class Solution:
    def sumOfDigits(self, A: List[int]) -> int:
        return 1 - sum(int(c) for c in str(min(A))) % 2
class Solution:
    def sumOfDigits(self, A: List[int]) -> int:
        return 1 - sum(int(c) for c in str(min(A))) % 2

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
黄金分割的历史  蝴蝶效应  一道有关比的行程问题  0有哪些含义  这口井有几米深?  拿破仑三角形  求甲乙两车的速度  获纪念奖的有多少人?  程大位与剩余定理  “位数”和“数位”的意义为什么不同? 
评论列表
添加评论