题解 | #最短无序连续子数组#

最短无序连续子数组

http://www.nowcoder.com/practice/d17f4abd1d114617b51e951027be312e

解题思路就是创建一个临时数组用来保存已有数据,然后对临时数组进行排序,再对临时数组与原数组进行对比,从前往后找出第一个不同的索引值,从后往前找出第一个不同的值,相减加1就可以得到目标值。

public class Solution {

public int findUnsortedSubarray (int[] nums) {
    // write code here
    if(nums==null||nums.length==0){
        return 0;
    }
    int length = nums.length;
    int[] temp = new int[length];
    System.arraycopy(nums,0,temp,0,length);
    //排序
    Arrays.sort(temp);
    //如果原数组就是排好序的直接返回0
    int index = 0;
    for (int i = 0; i < nums.length; i++) {
        if(temp[i]!=nums[i]){
            index=i;
            break;
        }else {
            index=i;
        }
    }
    if(index==length-1){
        return 0;
    }
    //从前往后找,找出第一个不同值对应的索引值
    int left = 0;
    int right = length-1;
    for (int i = 0; i < nums.length; i++) {
        if(temp[i]!=nums[i]){
            left=i;
            break;
        }else {
            left=i;
        }
    }
    //从后往前找,找出第一个不同值对应的索引值
    for (int i = nums.length - 1; i >= 0; i--) {
        if(temp[i]!=nums[i]){
            right=i;
            break;
        }
    }
    return right-left+1;
}

}

全部评论

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务