2021-08-31 Daily-Challenge
Today I have done Largest Number At Least Twice of Others and leetcode's August LeetCoding Challenge with cpp
.
Largest Number At Least Twice of Others
Description
You are given an integer array nums
where the largest integer is unique.
Determine whether the largest element in the array is at least twice as much as every other number in the array. If it is, return the index of the largest element, or return -1
otherwise.
Example 1:
Input: nums = [3,6,1,0]
Output: 1
Explanation: 6 is the largest integer.
For every other number in the array x, 6 is at least twice as big as x.
The index of value 6 is 1, so we return 1.
Example 2:
Input: nums = [1,2,3,4]
Output: -1
Explanation: 4 is less than twice the value of 3, so we return -1.
Example 3:
Input: nums = [1]
Output: 0
Explanation: 1 is trivially at least twice the value as any other number because there are no other numbers.
Constraints:
1 <= nums.length <= 50
0 <= nums[i] <= 100
- The largest element in
nums
is unique.
Solution
class Solution {
public:
int dominantIndex(vector<int>& nums) {
int max[2] = {};
int answer = -1;
for(int i = 0; i < nums.size(); ++i) {
if(nums[i] > max[0]) {
max[1] = max[0];
max[0] = nums[i];
answer = i;
} else if(nums[i] > max[1]) {
max[1] = nums[i];
}
}
return (max[0] >= max[1] * 2) ? answer : -1;
}
};
// Accepted
// 232/232 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 69.27 % of cpp submissions (10.8 MB)
August LeetCoding Challenge 31
Description
Find Minimum in Rotated Sorted Array
Suppose an array of length n
sorted in ascending order is rotated between 1
and n
times. For example, the array nums = [0,1,2,4,5,6,7]
might become:
[4,5,6,7,0,1,2]
if it was rotated4
times.[0,1,2,4,5,6,7]
if it was rotated7
times.
Notice that rotating an array [a[0], a[1], a[2], ..., a[n-1]]
1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]]
.
Given the sorted rotated array nums
of unique elements, return the minimum element of this array.
You must write an algorithm that runs in O(log n) time.
Example 1:
Input: nums = [3,4,5,1,2]
Output: 1
Explanation: The original array was [1,2,3,4,5] rotated 3 times.
Example 2:
Input: nums = [4,5,6,7,0,1,2]
Output: 0
Explanation: The original array was [0,1,2,4,5,6,7] and it was rotated 4 times.
Example 3:
Input: nums = [11,13,15,17]
Output: 11
Explanation: The original array was [11,13,15,17] and it was rotated 4 times.
Constraints:
n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
- All the integers of
nums
are unique. nums
is sorted and rotated between1
andn
times.
Solution
auto speedup = [](){
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
return 0;
}();
class Solution {
public:
int findMin(vector<int>& nums) {
int len = nums.size();
int low = 0;
int high = len - 1;
while(nums[low] > nums[high]) {
int mid = (low + high) >> 1;
if(nums[mid] >= nums[low]) {
low = mid + 1;
} else {
high = mid;
}
}
return nums[low];
}
};
// Accepted
// 150/150 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 23.47 % of cpp submissions (10.4 MB)