Remove Duplicates from Sorted Array II

Problem Descriptions:

Follow up for “Remove Duplicates”:

What if duplicates are allowed at most twice?

For example,

Given sorted array nums = [1,1,1,2,2,3],

Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length.

分析:当后一个值和前一个值(nums[i]nums[j] ) 不想等的时候 直接复制过来nums[++j] = nums[i] 将记录相同数值的flag 标记置为假flag = flase ; 如果两个值相同,下来看一下是不是第一次相同即flag 的值是否为flase 如果为真,说明这个值不能要,i 继续遍历下一个;如果flag 为假,说明这个就是第一次重复的值,按要求时需要添加进去,而且同时更新flag 为 true;

    public class Solution{
        public int removeDuplicates(int[] nums){
            int j = 0;
            boolean flag = false;
            for(int i = 1; i < nums.length; i++){
                if(nums[i] != nums[j]){
                    nums[++j] = nums[i];
                    flag = false;
                    }
                else if(flag) continue;
                else {
                    nums[++j] = nums[i];
                    flag = true;
                }
            }
            return j+1;
        }
    }

还有一种解法:代码如下

    public class Solution{
        public int removeDuplicates(int[] nums){
            if(nums.length < 2) return nums.length;
            int index = 2;
            for(int i = 2; i < nums.length; i++)
                if(nums[i] != nums[index - 2]) nums[index++] = nums[i];
            return index
        }
    }

算法分析:i 从2开始遍历,当第三个值nums[i]和第一个值nums[index - 2]相同的时候,那么由于数组是有序的,所以第三个值肯定和第二个值(nums[i]nums[index - 2] 中间的那个值)也是相同的,那么由于题目要求一个值最多只能出现2次,所以当前这个第三个值nums[i]就不能添加到数组中,所以i++ 遍历下一个值就好;如果当前的第三个值和第一个值不相同,那么和第二个值(nums[i]nums[index - 2] 中间的那个值)是否相同都满足题目要求,所以直接将该值添加进数组(nums[index++] = nums[i])。接着遍历下一个值,思路都是一样的。

内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值