Home Weekly and Biweekly Contests | October | Leetcode
Post
Cancel

Weekly and Biweekly Contests | October | Leetcode

Weekly Contest 315

2441. Largest Positive Integer That Exists With Its Negative

Given an integer array nums that does not contain any zeros, find the largest positive integer k such that -k also exists in the array.

Return the positive integer k. If there is no such integer, return-1.

O(n) time

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    int findMaxK(vector<int>& nums) {
        unordered_map<int, int> mp;

        int ans = INT_MIN, key;

        for(auto e: nums){
            if(mp[-e]){
                key = e > 0 ? e : -e;
                ans = max(ans, key);
            }
            mp[e]++;
        }

        return ans == INT_MIN ? -1 : ans;

    }

O(1) space

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    int findMaxK(vector<int>& nums) {
        sort(nums.begin(), nums.end());

        int l = 0, r = nums.size() - 1;

        while(l < r){
            if(nums[l]*-1 == nums[r])
                return nums[r];
            else if (nums[l]*-1 < nums[r])
                r--;
            else
                l++;
        }

        return -1;
    }

2442. Count Number of Distinct Integers After Reverse Operations

You are given an array nums consisting of positive integers.

You have to take each integer in the array, reverse its digits, and add it to the end of the array. You should apply this operation to the original integers in nums.

Return the number of distinct integers in the final array.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    int rev_num(int n){
        int rev = 0;
        while(n){
            rev = rev * 10 + (n%10);
            n /= 10;
        }
        return rev;
    }

    int countDistinctIntegers(vector<int>& nums) {
        unordered_map<int, int> mp;
        for(auto e: nums) {
                mp[e]++;
                mp[rev_num(e)]++;
        }
        return mp.size();
    }

2443. Sum of Number and Its Reverse

Given a non-negative integer num, return true if num can be expressed as the sum of any non-negative integer and its reverse, or false otherwise.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    int rev(int n){
        int rev = 0;
        while(n){
        rev = (rev*10) + (n%10);
        n /= 10;
        }
        return rev;
    }

    bool sumOfNumberAndReverse(int num) {

        if((num%11 == 0 && num < 100) || (num%2 == 0 && num < 20)) return true;

        for(int i=1; i<=num/2; i++)
            if(i + rev(i) == num)
                return true;

        return false;
    }
This post is licensed under CC BY 4.0 by the author.

Weekly and Biweekly Contests | March | Leetcode

Project Euler