当前位置:网站首页>[sword finger offer] 59 - I. maximum value of sliding window
[sword finger offer] 59 - I. maximum value of sliding window
2022-07-07 18:37:00 【LuZhouShiLi】
The finger of the sword Offer 59 - I. Maximum sliding window
subject
Given an array nums And the size of the sliding window k, Please find the maximum value in all sliding windows .
Ideas
- Traverse the elements in a given array , If the queue is not empty and the currently inspected element is greater than or equal to the end of the queue element , Then remove the tail element , Until the queue is empty or the current review element is smaller than the new tail element
- When the subscript of the first element is smaller than the left boundary of the sliding window Left Indicates that the team leader element no longer belongs to the sliding window , Remove it from the team head element
- Because array subscript from 0 Start , So when the right edge of the window right + 1>= k, It means that the window has been formed . At this time, the first element of the queue is the maximum value in the window .
Code
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if(nums.length == 0)
{
return new int[0];
}
// Number of windows
int[] res = new int[nums.length - k + 1];
LinkedList<Integer> queue = new LinkedList<>();
// Traverse the elements in the array , right Represents the right boundary of the sliding window
for(int right = 0; right < nums.length; right++)
{
// If the queue is not empty And the current element is greater than or equal to the tail element Remove the tail element
// until The queue is empty Or the current element is smaller than the new tail element
while(!queue.isEmpty() && nums[right] >= nums[queue.peekLast()]){
queue.removeLast();
}
// Storage element subscript
queue.addLast(right);
// Calculate the left boundary of the window
int left = right - k + 1;
// When the subscript of the first element is less than the left boundary of the sliding window Left
// Indicates that the team leader element is no longer sliding inside the window Remove it from the head of the team
if(queue.peekFirst() < left)
{
queue.removeFirst();
}
// From below 0 Start So when right + 1 >= k It indicates that the sliding window has been formed The first element of the queue is the maximum value of the window
if(right + 1 >= k)
{
res[left] = nums[queue.peekFirst()];// Store the team leader element in res in
}
}
return res;
}
}
边栏推荐
猜你喜欢

通过 Play Integrity API 的 nonce 字段提高应用安全性

【Unity Shader】插入Pass实现模型遮挡X光透视效果

Year SQL audit platform

Discuss | what preparations should be made before ar application is launched?

讨论 | AR 应用落地前,要做好哪些准备?

Save the memory of the model! Meta & UC Berkeley proposed memvit. The modeling time support is 30 times longer than the existing model, and the calculation amount is only increased by 4.5%

go语言的字符串类型、常量类型和容器类型

Summary of debian10 system problems

标准ACL与扩展ACL

RIP和OSPF的区别和配置命令
随机推荐
Discuss | what preparations should be made before ar application is launched?
Wireshark analyzes packet capture data * cap
SD_DATA_SEND_SHIFT_REGISTER
Do you really understand sticky bag and half bag? 3 minutes to understand it
Tips for this week 134: make_ Unique and private constructors
Idea completely uninstalls installation and configuration notes
【demo】循环队列及条件锁实现goroutine间的通信
【C语言】字符串函数
Skills of embedded C language program debugging and macro use
Tips for short-term operation of spot silver that cannot be ignored
回归测试的分类
元宇宙带来的创意性改变
sqlite sql 异常 near “with“: syntax error
Hash, bitmap and bloom filter for mass data De duplication
[network attack and defense principle and technology] Chapter 4: network scanning technology
回归问题的评价指标和重要知识点总结
Yearning-SQL审核平台
The performance and efficiency of the model that can do three segmentation tasks at the same time is better than maskformer! Meta & UIUC proposes a general segmentation model with better performance t
单臂路由和三层交换的简单配置
Five network IO models