Problem: 2419. 按位與最大的最長子數組
文章目錄
- 思路
- 解題過程
- 復雜度
- Code
思路
按位異或只會讓數值越來越小,因此最長的連續按位與的最大值只存在于連續最大值中。
解題過程
遍歷數組取出最大值,再遍歷找到每一次連續最大值,從中取出最長的連續最大值數組。
復雜度
- 時間復雜度: O(n)O(n)O(n)
- 空間復雜度: O(n)O(n)O(n)
Code
class Solution {
public:int longestSubarray(vector<int>& nums) {int n = nums.size();int amax = -1;for (int i = 0; i < n; i++) {amax = max(amax, nums[i]);}int ans = 0;int bmax = 0;for (int i = 0; i < n; i++) {if (nums[i] == amax) {ans++;}bmax = max(bmax, ans);if (nums[i] != amax) {ans = 0;}}return bmax;}
};