Sponsored
Sponsored
This approach involves converting each number into a string to easily count the number of digits.
Time Complexity: O(n), where n is the number of elements in the array.
Space Complexity: O(1), as we're using a fixed amount of extra space.
1def findNumbers(nums):
2 count = 0
3 for num in nums:
4 if len(str(num)) % 2 == 0:
5 count += 1
6 return count
7
8nums = [12, 345, 2, 6, 7896]
9print(findNumbers(nums))
This Python function iterates over the list, converts each number to a string, and increments the count if the length of the string (number of digits) is even.
The logarithmic approach calculates the number of digits by using logarithms; specifically, the base-10 logarithm of a number is taken, and the result is incremented by 1 to get the total number of digits.
Time Complexity: O(n), the array is processed once.
Space Complexity: O(1), constant space utilized.
1#include <vector>
#include <cmath>
using namespace std;
int findNumbers(vector<int>& nums) {
int count = 0;
for (int num : nums) {
if (static_cast<int>(log10(num)) % 2 == 1) {
count++;
}
}
return count;
}
int main() {
vector<int> nums = {12, 345, 2, 6, 7896};
cout << findNumbers(nums) << endl;
return 0;
}
In this C++ code, log10()
is used to determine the number of digits. Adding 1 to static_cast
gives the digit count, which is checked for evenness.