645. Set Mismatch挑出不匹配的元素和应该真正存在的元素

[抄题]:

he set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition of one number and loss of another number.

Given an array nums representing the data status of this set after the error. Your task is to firstly find the number occurs twice and then find the number that is missing. Return them in the form of an array.

Example 1:

Input: nums = [1,2,2,4]
Output: [2,3]

[暴力解法]:

hashset

时间分析:

空间分析:n

[优化后]:

时间分析:

空间分析:1

[奇葩输出条件]:

[奇葩corner case]:

[思维问题]:

[一句话思路]:

为了优化空间,判断重复性时 直接*(-1)

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

[一刷]:

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

[复杂度]:Time complexity: O() Space complexity: O()

[英文数据结构或算法,为什么不用别的数据结构或算法]:

[关键模板化代码]:

[其他解法]:

[Follow Up]:

[LC给出的题目变变变]:

[代码风格] :

原文地址:https://www.cnblogs.com/immiao0319/p/8947574.html

时间: 2024-11-12 22:32:35

645. Set Mismatch挑出不匹配的元素和应该真正存在的元素的相关文章

LeetCode 645. Set Mismatch (集合不匹配)

The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition of one number and loss of another number. Given an arr

从数组里挑出仅仅出现一次的对象

去某公司面试~ 技术问的问题是给一个数组,挑出里面仅仅出现一次的数字. 下面是我给出的方法,算不上正规的算法.也没考虑什么控件复杂度. 假设你是大牛,请在回复里写一下 你的算法.欢迎互动 public static void main(String[] args) { int array[]={1,3,5,7,9,1,3,5,7}; int length=array.length; StringBuilder sb= new StringBuilder(); for(int i=0;i<leng

645. Set Mismatch - LeetCode

Question 645.?Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果res中,然后再遍历原数组,如果某个位置上的数字为正数,说明该位置对应的数字没有出现过,加入res中即可 Java实现: public int[] findErrorNums(int[] nums) { /* int a = 0; for (int i : nums) { if (nu

【猜牌问题】甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A、Q、4 黑桃J、8、4、2、7、3 草色K、Q、5、4、6 方块A、5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙。教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌。 乙:我知道你不知道这张牌。 甲:现在我知道这张牌了。 乙:我也知道了。 请问:这张牌是什么牌?

甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A.Q.4 黑桃J.8.4.2.7.3 草色K.Q.5.4.6 方块A.5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙.教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌.乙:我知道你不知道这张牌.甲:现在我知道这张牌了.乙:我也知道了. 请问:这张牌是什么牌? 解: 教授告知甲点数,告知乙花色 人物 已知 未知 甲 A 红桃.方块 Q 红桃.草色 4 红桃.黑桃.草色 J 黑桃 8 黑桃 2 黑桃 7 黑桃 3 黑

打印出大小为n的数组(可能有重复元素)里所有可能的组合

Input: {1, 2, 3, 4}, r=2 Output: {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4} and {3, 4}. package recursion; import java.util.ArrayList; import java.util.Collections; public class Print_all_possible_combinations_of_r_elements_in_a_given_array_of_size_n { /

[ jquery 选择器 :header ] 此方法选取匹配如 h1, h2, h3之类的标题元素

此方法选取匹配如 h1, h2, h3之类的标题元素 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='keyword1,keywor

HLG 1710 给出三个集合a,b,c,统计集合a元素+集合b中元素=集合c中的元素的个数 (基础题)

链接: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1710 Description 有A. B. C 三个集合的,其中a∈A, b ∈ B, c ∈ C,求有多少种方式使得a + b = c. Input 有多组测试数据,请处理到文件结束. 对于每组测试数据,有三行: 第一行为A集合的描述,第一个数为n,表示A集合有n个数,接下来有n个整数a1~an. 第二行为B集合,第三行为C集合,表

C语言数据结构链栈(创建、入栈、出栈、取栈顶元素、遍历链栈中的元素)

/**创建链栈*创建一个top指针代表head指针*采用链式存储结构*采用头插法创建链表*操作 创建 出栈 入栈 取栈顶元素*创建数据域的结构体*创建数据域的名称指针*使用随机函数对数据域的编号进行赋值*/ #include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define OK 1#define ERROR 0#define NAMESIZE 255//字符串的最大长度

parents([expr]) 取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素)。可以通过一个可选的表达式进行筛选。

parents([expr]) 概述 取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素).可以通过一个可选的表达式进行筛选.大理石平台检定规程 参数 exprStringV1.0 用于筛选祖先元素的表达式 示例 描述: 找到每个span元素的所有祖先元素. HTML 代码: <html><body><div><p><span>Hello</span></p><span>Hello Again<