【leetcode 简单】 第七十四题 缺失数字

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

示例 1:

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

示例 2:

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

说明:

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

class Solution:
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        等差数列前n项和公式 Sn = (a1 + an)*n / 2
        首项a1 = 1,末项an = n,公差d = 1,项数为n
        """

        n = len(nums)
        return int(n * (n + 1) / 2 - sum(nums)) 

原文地址:https://www.cnblogs.com/flashBoxer/p/9532407.html

时间: 2024-11-08 20:03:04

【leetcode 简单】 第七十四题 缺失数字的相关文章

【leetcode 简单】 第九十四题 左叶子之和

计算给定二叉树的所有左叶子之和. 示例: 3 / 9 20 / 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def sumOfLeft

【leetcode 简单】 第九十六题 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不会超过 1010. 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7. class Solution(object): def longestPalindrome(self, s): &quo

数组中超过出现次数一半的数字 【微软面试100题 第七十四题】

问题要求: 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字. 参考资料:编程之美2.3 寻找发帖水王 问题分析: 方法1 对数组排序,然后顺次查找其中最多的: 方法2 对数组排序,最中间一个肯定为要找的数字,时间复杂度O(NlogN): 方法3 每次消去数组中两个不同的数,最后剩下的肯定为要找的数字,时间复杂度O(N). 方法3代码1如下,以下是图解代码1 代码实现: //代码1#include <stdio.h> int Find(int* ID, int N); int ma

【leetcode 简单】第十六题 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" class Solution: def addBinary(self, a, b): """ :

【leetcode 简单】第十八题 爬楼梯

假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶. 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶. 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶 class Solution(object): def climbStairs

【leetcode 简单】第十八题 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* deleteDupli

【leetcode 简单】 第九十五题 数字转换为十六进制数

给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字母(a-f)都必须是小写. 十六进制字符串中不能包含多余的前导零.如果要转化的数为0,那么以单个字符'0'来表示:对于其他情况,十六进制字符串中的第一个字符将不会是0字符. 给定的数确保在32位有符号整数范围内. 不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法. 示例 1: 输入: 26 输出: "1a" 示例 2: 输入: -1 输出: "f

【leetcode 简单】 第九十二题 第N个数字

在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字. 注意: n 是正数且在32为整形范围内 ( n < 231). 示例 1: 输入: 3 输出: 3 示例 2: 输入: 11 输出: 0 说明: 第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分. class Solution(object): def findNthDigit(self, n): "

《剑指offer》第四十四题:数字序列中某一位的数字

// 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等.请写一 // 个函数求任意位对应的数字. #include <iostream> #include <algorithm> using namespace std; int countOfIntegers(int digits); int digitAtIndex(