132算法题分析

最近准备学习算法132,网上思路很多,代码表达也各有千秋

借鉴网上的思路,

// 以下代码逻辑为:
// 遍历arrayList数组长度,每个value都是aj,之后得到左边的最小值ai,如果小于aj
// ,则用ai和aj两个值对比右边的a(j+1)~arraylist.size中看有没有符合的数值
因为每个人的认知和思维不同,以下是本人写出来的一种解答方式,亲测有效,循环遍历次数少,仅限参考

int ai = arrayList.get(0);
int aj = 0;
int ak = 0;
for(int j = 1;j<(arrayList.size()-1);j++){

    //当前中间的数值,需要是最大的数值
    aj = arrayList.get(j);

    //每次索引往下走一次则判断之前是否是索引0~j之间的最小值,如果j-1是最小值,则重新赋值ai
    if(ai>arrayList.get(j-1)){
        ai = arrayList.get(j-1);
    }

    //在aj大于ai的情况下,才去循环遍历获取索引j+1~arrayList.size中,获取对应的ak
    if(aj>ai){
        for(int k=j+1;k<arrayList.size();k++){
            ak = arrayList.get(k);
            Log.i("tag","ak="+arrayList.get(k)+";ai="+ai+";aj="+aj);

            if(aj>ak && ak>ai){
                //则存在满足132算法的排序
                Log.i("tag","满足算法的排序的数据为:ai="+ai+",aj="+aj+",ak="+ak);
                return;
            }
        }
    }
}

在此提供自己的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值