zoukankan      html  css  js  c++  java
  • 376. Wiggle Subsequence

    这个傻屌题,二刷思路一下子就找到了,问题是edge case多的一逼,其实难就难在如何处理相等的2个元素。比如记录相等前的正负判断,这个还好说。

    一上来就相等怎么办,必须解决这种情况,反正和麻烦。。

    public class Solution {
        public int wiggleMaxLength(int[] nums) {
            if(nums.length <= 1) return nums.length;
            
    
    
            boolean pos = (nums[1] - nums[0] > 0);
            boolean begin = true;
            //3 3 3 2 5
            int max = 1;
            for(int i = 1; i < nums.length;i++)
            {
                if(begin)
                {
                    if(nums[i]==nums[i-1]) continue;
                    else
                    {
                        pos = (nums[i] - nums[i-1]>0);
                        begin = false;
                        max++;
                        continue;
                        
                    }
                }
                
                
                
                if(nums[i] == nums[i-1]) continue;
                if(pos && nums[i-1] > nums[i])
                {
                    max++;
                    pos=!pos;
                }
                else if(!pos && nums[i-1] < nums[i])
                {
                    max++;
                    pos=!pos;
                    
                }
                else continue;
    
            }
            
            return max;
        }
    }
    

    怎么看都觉得一刷的方法是错的,然后测试了一下,果然他妈错了。一刷没有考虑我说的那种,一上来就是相等这种情况。答案有5种方法,除去垃圾法,我想到的似乎是第五种,GREEDY。

    动态规划似乎没有那么多edge case需要考虑。

  • 相关阅读:
    团队冲刺第二阶段-7
    用户体验评价
    团队冲刺第二阶段-6
    第十四周学习进度报告
    团队冲刺第二阶段-5
    团队冲刺第二阶段-4
    14周课堂测试---找水王
    进度日报14
    进度日报13
    进度日报12
  • 原文地址:https://www.cnblogs.com/reboot329/p/5875876.html
Copyright © 2011-2022 走看看