描述
给出一个包含 0 … N 中 N 个数的序列,找出0 … N 中没有出现在序列中的那个数。
样例
样例 1:
输入:[0,1,3]
输出:2
样例 2:
输入:[1,2,3]
输出:0
法一:如果没有时间和空间复杂度的限制,下面这个暴力遍历是可以做出来的
from typing import (
List,
)
class Solution:
"""
@param nums: An array of integers
@return: An integer
"""
def find_missing(self, nums: List[int]) -> int:
# write your code here
l = len(nums)
for i in range(l+1):
if i not in nums:
return i
法二:等差数列求和
from typing import (
List,
)
class Solution:
"""
@param nums: An array of integers
@return: An integer
"""
def find_missing(self, nums: List[int]) -> int:
# write your code here
l = len(nums)
sum_nums = (l * (l+1))//2
return sum_nums - sum(nums)
Java版:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// write your code here
// read data from console
// output the answer to the console according to the
// requirements of the question
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = ((1 + n) * n) / 2;
for(int i = 1; i < n; i++){
int a = sc.nextInt();
sum -= a;
}
System.out.println(sum);
}
}