模型安全:PETRv2对抗样本防御研究

核心内容摘要

OpenClaw,重新定义AI Agent,一款真正可用的个人智能助手操作系统
GLM-4-9B-Chat-1M效果展示:技术白皮书全文理解+架构图描述生成+漏洞点自动标注

多模态大模型对齐实战教程(非常硬核),数据有限也能搞定,收藏这一篇就够了!

力扣题目链接

滑动窗口最大值 - 力扣LeetCode题目描述给你一个整数数组nums有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。

你只可以看到在滑动窗口内的k个数字。

滑动窗口每次只向右移动一位。

返回滑动窗口中的最大值。

示例 1输入nums [1,3,-1,-3,5,3,6,7], k 3输出[3,3,5,5,6,7]解释滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 731 [3 -1 -3] 5 3 6 731 3 [-1 -3 5] 3 6 751 3 -1 [-3 5 3] 6 751 3 -1 -3 [5 3 6] 761 3 -1 -3 5 [3 6 7]7这道题很适合用单调队列来写这样外面很容易通过一侧的值就知道最大值了。

什么是单调队列其实就是单调递增或单调递减队列。

那么就用单调递减队列来设计吧。

单调递减队列是左边队列出口处的值最大所以窗口最大值就是索引0处通过队列的pop和push函数来设计吧。

最开始的滑动窗口值只能用push函数通过它让我们的队列成单调递减那么我们先设计push函数。

例单减数列 出口处 9 8 7 4 入口处当要进来的元素比入口处元素大时进来后就不成单减队列了所以要先比较把比他大的元素都弹出然后再将该元素加入队列再设计pop函数由刚才的push函数设计就知道队列里面的元素个数不一定等于滑动窗口里的元素个数。

所以队列的元素个数一定小于等于滑动窗口元素个数。

那么我们就不用每次pop都一定弹出元素。

所以我们要弹出的元素等于出口处元素时才需要弹出元素。

现在就设计完成了单调队列之后就很容易了完整代码func MaxSlidingWindow(nums []int, k int) []int { myque : make(queue,

result : make([]int,

//初始窗口 for i : 0; i k; i { myque.push(nums[i]) } //初始窗口值 result append(result, myque.front()) for i : k; i len(nums); i { myque.pop(nums[i-k]) //移除前面的元素 myque.push(nums[i]) //添加新的元素 result append(result, myque.front()) } return result } // 单调队列(由大到小) type queue []int // 比入口元素大的就弹出元素直到比它小 func (s *queue) push(x int) { for len(*s) 0 x (*s)[len(*s)-1] { *s (*s)[:len(*s)-1] //弹出入口元素 } *s append(*s, x) } // 若移除的元素等于出口元素就弹出 func (s *queue) pop(x int) { if len(*s) 0 x (*s)[0] { *s (*s)[1:] } } // 返回窗口最大值 func (s *queue) front() int { return (*s)[0] }

17.菠萝-17.菠萝应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123