2021-03-03 Daily-Challenge

Today I have done Closest Divisors and leetcode's March LeetCoding Challenge with cpp.

Closest Divisors

Description

Given an integer num, find the closest two integers in absolute difference whose product equals num + 1 or num + 2.

Return the two integers in any order.

Example 1:

Input: num = 8
Output: [3,3]
Explanation: For num + 1 = 9, the closest divisors are 3 & 3, for num + 2 = 10, the closest divisors are 2 & 5, hence 3 & 3 is chosen.

Example 2:

Input: num = 123
Output: [5,25]

Example 3:

Input: num = 999
Output: [40,25]

Constraints:

  • $1 \le num \le 10^9$

Solution

class Solution {
public:
    vector<int> closestDivisors(int num) {
        int minDiff = INT_MAX;
        vector<int> answer{0, 0};
        for(int target = num + 1; target < num + 3; ++target) {
            for(int i = 1; i * i <= target; ++i) {
                if(target % i == 0 && target / i - i < minDiff) {
                    minDiff = target / i - i;
                    answer[0] = i;
                    answer[1] = target / i;
                }
            }
        }
        return answer;
    }
};

then compute backforward and fast return

class Solution {
public:
    vector<int> closestDivisors(int num) {
        int minDiff = INT_MAX;
        vector<int> answer{0, 0};
        for(int target = num + 1; target < num + 3; ++target) {
            for(int i = 1; i * i <= target; ++i) {
                if(target % i == 0 && target / i - i < minDiff) {
                    minDiff = target / i - i;
                    answer[0] = i;
                    answer[1] = target / i;
                }
            }
        }
        return answer;
    }
};

March LeetCoding Challenge 3

Description

Missing Number

Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array.

Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity?

Example 1:

Input: nums = [3,0,1]
Output: 2
Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.

Example 2:

Input: nums = [0,1]
Output: 2
Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.

Example 3:

Input: nums = [9,6,4,2,3,5,7,0,1]
Output: 8
Explanation: n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.

Example 4:

Input: nums = [0]
Output: 1
Explanation: n = 1 since there is 1 number, so all numbers are in the range [0,1]. 1 is the missing number in the range since it does not appear in nums.

Constraints:

  • n == nums.length
  • $1 \le n \le 10^4$
  • 0 <= nums[i] <= n
  • All the numbers of nums are unique.

Solution

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int len = nums.size();
        int sum = (len + 1) * len / 2;
        for(auto i : nums) sum -= i;
        return sum;
    }
};