建网站一般需要多少钱,做网站具体指什么,建设部网站官网证书编号,做黄金期货的网站⭐️ 题目描述 #x1f31f; leetcode链接#xff1a;最长和谐子序列
思路#xff1a; 第一步先将数组排序#xff0c;在使用滑动窗口#xff08;同向双指针#xff09;#xff0c;定义 left right 下标#xff0c;比如这一组数 {1,3,2,2,5,2,3,7} 排序后 {1,2,2,2,3,…⭐️ 题目描述 leetcode链接最长和谐子序列
思路 第一步先将数组排序在使用滑动窗口同向双指针定义 left right 下标比如这一组数 {1,3,2,2,5,2,3,7} 排序后 {1,2,2,2,3,3,5,7} 因为是排序过后的数组所以当前 right 就是当前区间窗口的最大值而 left 就是当前区间窗口的最小值nums[right] - nums[left] 1 的话就更新当前窗口的长度并 right若 nums[right] - nums[left] 1 让 left 向 right 靠近因为是升序数组若 nums[right] - nums[left] 1 则 right。
代码
class Solution {
public:int findLHS(vectorint nums) {// 排序sort(nums.begin() , nums.end());// 滑动窗口 同向双指针int left 0;int right 0;int ans_length 0;while (right nums.size()) {// 升序数组 left就指向当前窗口的最小值// right指向的是当前窗口的最大值if (nums[right] - nums[left] 1) {// 差值大于1 让left 向 right 靠近left;} else if (nums[right] - nums[left] 1) {// 差值小于1 让rightright;} else {// 当前窗口的最大值和最小值差是1// 更新长度ans_length max(ans_length , right - left 1);right;}}return ans_length;}
};