• 随意给一组数,找出满足一下条件的a[i],a[i]左边的数小于等于a[i],a[i]右边的数大于等于a[i]


    使用一个额外数组记录每个数后面的最小值是多少,一个额外数组记录一个数前面的最大值是多少,当然,为了减少空间复杂度,可以使用一个数字记录一个数字前面最大值是多少。算法如下:

    public List<Integer> findMidNum(int []num)  
        {  
            List<Integer>result=new ArrayList();  
            int[]min=new int[num.length];  
            min[num.length-1]=num[num.length-1];  
              
            for(int i=num.length-2;i>=0;i--)  
            {  
                min[i]=(min[i+1]>num[i])?num[i]:min[i+1];  
            }  
            if(num[0]<=min[0])  
            {  
                result.add(num[0]);  
            }  
              
            int max=num[0];  
            for(int i=1;i<=num.length-2;i++)  
            {  
                max=(max>num[i])?max:num[i];  
                if(num[i]>=max && num[i]<=min[i])  
                {  
                    result.add(num[i]);  
                      
                }  
            }  
              
            if(num[num.length-1]>=max)  
            {  
                result.add(num[num.length-1]);  
            }  
              
            return result;  
        }  
  • 相关阅读:
    旧键盘 (20)
    人口普查(20)
    打印沙漏(20)
    程序运行时间(15)
    反转链表 (25)
    科学计数法 (20)
    组个最小数 (20)
    python yield使用
    python如何优雅判断类型
    python中如何优雅使用import
  • 原文地址:https://www.cnblogs.com/samulescollection/p/3406892.html
Copyright © 2020-2023  润新知