Missing Number

来源:互联网 发布:阿里云助手 编辑:程序博客网 时间:2024/06/04 18:39

https://leetcode.com/problems/missing-number/

先求出nums中最大的数max,然后根据等差数列求和公式求出1到max的所有数的和,然后再减去nums中所有数的和的差就是少的那个数!!

注意,当nums中没有0或者有0而且0到max都有的两种特殊情况,前者输出0,后者输出max + 1;

public class Solution {   public int missingNumber(int[] nums) {int sum = 0;int max = Integer.MIN_VALUE;int flag = 0;        for (int i = 0; i < nums.length; i++) {        if (nums[i] == 0) {    flag = 1;    }        if (nums[i] > max) {max = nums[i];}sum += nums[i];}                int total = max * (max + 1) / 2;        if (total - sum == 0) {        if (flag == 1) {        return max + 1;}        else        return 0;}        else {return total - sum;}    }}


0 0
原创粉丝点击