[Swift-2019力扣杯春季决赛]1. 有序数组中的缺失元素

给出一个有序数组 A,数组中的每个数字都是 独一无二的,找出从数组最左边开始的第 K 个缺失数字。

示例 1:

输入:A = [4,7,9,10], K = 1
输出:5
解释:
第一个缺失数字为 5 。

示例 2:

输入:A = [4,7,9,10], K = 3
输出:8
解释:
缺失数字有 [5,6,8,...],因此第三个缺失数字为 8 。

示例 3:

输入:A = [1,2,4], K = 3
输出:6
解释:
缺失数字有 [3,5,6,7,...],因此第三个缺失数字为 6 。

提示:

  1. 1 <= A.length <= 50000
  2. 1 <= A[i] <= 1e7
  3. 1 <= K <= 1e8


692 ms

 1 class Solution {
 2     func missingElement(_ nums: [Int], _ k: Int) -> Int {
 3         var k = k
 4         var n:Int = nums.count
 5         var i:Int = 0
 6         while(i + 1 < n)
 7         {
 8             if nums[i + 1] - nums[i] - 1 >= k
 9             {
10                 return nums[i] + k
11             }
12             k -= nums[i + 1] - nums[i] - 1
13             i += 1
14         }
15         return nums[n-1] + k
16     }
17 }

原文地址:https://www.cnblogs.com/strengthen/p/10745707.html

时间: 2024-07-30 11:35:35

[Swift-2019力扣杯春季决赛]1. 有序数组中的缺失元素的相关文章

[Swift-2019力扣杯春季决赛]3. 最长重复子串

给定字符串 S,找出最长重复子串的长度.如果不存在重复子串就返回 0. 示例 1: 输入:"abcd" 输出:0 解释:没有重复子串. 示例 2: 输入:"abbaba" 输出:2 解释:最长的重复子串为 "ab" 和 "ba",每个出现 2 次. 示例 3: 输入:"aabcaabdaab" 输出:3 解释:最长的重复子串为 "aab",出现 3 次. 示例 4: 输入:"a

[Swift-2019力扣杯春季决赛]2. 按字典序排列最小的等效字符串

给出长度相同的两个字符串:A 和 B,其中 A[i] 和 B[i] 是一组等价字符.举个例子,如果 A = "abc" 且 B = "cde",那么就有 'a' == 'c', 'b' == 'd', 'c' == 'e'. 等价字符遵循任何等价关系的一般规则: 自反性:'a' == 'a' 对称性:'a' == 'b' 则必定有 'b' == 'a' 传递性:'a' == 'b' 且 'b' == 'c' 就表明 'a' == 'c' 例如,A 和 B 的等价信息

力扣(LeetCode)删除排序链表中的重复元素 个人题解

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 这题思路比较简单,同样是快慢针的思路. 用一个整数类型val对应最新的只出现过一次的那个值, 如果节点的下一个节点的值和这个对应则不做别的操作,快针进入下一个, 如果不对应则接到慢针对应的节点上,同时快针慢针都向前一位,整数val设置为新的值,以此类推. 代码如下: 1 class Solution { 2 public ListNode deleteDuplicates(ListNode head) { 3 if (head ==

力扣(LeetCode) 852. 山脉数组的峰顶索引

我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1] 给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]

【算法练习题】力扣练习题——数组(6): 在有序数组中查找元素存在的范围

原题说明:给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [-1, -1]. 原题链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array 题目分析: 这道题目当然也是用二分查找来解题.经过上道题的教训,这次我详细考察了各个

LeetCode 5097. 力扣排行榜

地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一个排行榜 Leaderboard. 请你帮忙来设计这个 Leaderboard 类,使得它有如下 3 个函数: addScore(playerId, score):假如参赛者已经在排行榜上,就给他的当前得分增加 score 点分值并更新排行.假如该参赛者不在排行榜上,就把他添加到榜单上,并且将分数设

力扣 —— Two Sum ( 两数之和) python实现

题目描述: 中文: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 英文: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each in

卡特兰数(Catalan number)-力扣96

卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 244662

力扣算法题—042接雨水

1 #include"000库函数.h" 2 //一点头绪都没有 3 //然后就自己按自己的意思来一遍 4 //好像没有用算法 5 //16ms,让我激动一把 6 7 class Solution { 8 public: 9 int trap(vector<int>& height) { 10 if (height.size() < 2)return 0; 11 int s = 0;//起始点 12 int e = 0;//终止点 13 int v = 0;/