贪心算法 (3)(java)摆动序列。

给定一个整数数组 `nums`,找到其中最长的摆动子序列的长度。摆动子序列是指序列中相邻元素的差值符号交替变化(即正负交替)。

贪心:估计出所有的波峰以及波谷的个数。

public class Solution {
    public int wigglemaxLengh(int[] nums)
    {
        //这是一个公关方法,接受一个整数数组作为参数,并返回一个整数。该方法用于计算数组中最长摆动子序列的长长度
        int n= nums.length;//获取数组长度
        if(n<2)return n;//长度为1或0本身就是摆动序列
        int ret =0,left=0;
        for(int i=0;i<n-1;i++)//
        {
            int right=nums[i+1]-nums[i];//计算当前元素与下一个元素的差值
            if(right==0) continue;//如果值为0,跳过当前循环,因为摆动序列的差值不能为0
            if(left*right<=0)ret++;//如果当前差值与上一个差值的乘积小于0,说明摆动方向发生了变化,增加摆动序列的长度
            left=right;
        }
        return ret+1;
    }

    public static void main(String[] args) {
        Solution solution=new Solution();
        int[] nums ={1,7,4,9,2,5};
        System.out.println(solution.wigglemaxLengh(nums));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值