leetcode-268-缺失数字(missing number)-java

版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/83375692

题目及测试

package pid268;
/* 缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

示例 1:

输入: [3,0,1]
输出: 2

示例 2:

输入: [9,6,4,2,3,5,7,0,1]
输出: 8

说明:
你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?





*/
public class main {
	
	public static void main(String[] args) {
		int[][] testTable = {{3,0,1},{9,6,4,2,3,5,7,0,1},{0,1,2,3},{1,2,3},{0}};
		for(int i=0;i<testTable.length;i++){
			test(testTable[i]);
		}
		
	}
		 
	private static void test(int[] ito) {
		Solution solution = new Solution();
		long begin = System.currentTimeMillis();
		System.out.println("ito= ");
		for(int i=0;i<ito.length;i++){
			System.out.print(ito[i]+" ");
		}
		System.out.println();
		int rtn;
		rtn=solution.missingNumber(ito);//执行程序
		long end = System.currentTimeMillis();		
		System.out.println("rtn="+rtn);
		System.out.println();
		System.out.println("耗时:" + (end - begin) + "ms");
		System.out.println("-------------------");
	}

}

解法1(成功,2ms,较快)
先遍历一遍得到max值
然后求得0-max的和 用公式=sum
用sum减去所有的数
如果不为0,则必为这个数
如果为0
有两种可能
012 和12
第一种结果为 3 第二种 0
如果length=3不与max相同,则为max+1
如果length=max 则为0

package pid268;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;



public class Solution  {
public int missingNumber(int[] nums) {
	//额外情况可能性
	//012  3
	//12  0
    int max=0;
    int sum=0;
    int length=nums.length;
    if(length==0){
    	return 0;
    }
    for(int i=0;i<length;i++){
    	if(nums[i]>max){
    		max=nums[i];
    	}
    }
    sum=(1+max)*max/2;
    for(int i=0;i<length;i++){
    	sum=sum-nums[i];
    }
    if(sum==0&&max!=length){
    	return max+1;
    }
    else{
    	return sum;
    }

    }
}

解法2(别人的)
可以发现,总共n个,长度n-1,所以真正的max必为length,不用遍历求max,而且不在中间用公式求和,直接+i-num[i]即可

public int missingNumber(int[] nums) {
		// i的范围是0~nums.length-1,算上nums.length(N)就是0~N所有数字
		int res = nums.length;
		for (int i = 0; i < nums.length; i++) {
			res += (i - nums[i]);
		}
		return res;
	}

猜你喜欢

转载自blog.csdn.net/xushiyu1996818/article/details/83375692