60.在其它数都出现k次的数组中找到只出现一次的数
题目链接
题目描述
给定一个整型数组arr和一个大于1的整数k。已知arr中只有1个数出现了一次,其他的数出现k次,请返回出现了1次的数。
输入描述
输入包含两行,第一行包含两个整数n和k(1≤n≤105,1≤k≤100),n代表数组arr的长度,第二行n个整数,代表数组arr,数组arr中每个数都是32位整数。
输出描述
输出一个整数,代表唯一出现1次的数。
示例1
输入
7 3 5 4 1 1 5 1 5
输出
4
备注
时间复杂度O(n)O(n),额外空间复杂度O(1)O(1)。
关键技术
数字第一次出现的位置 等于 最后一次出现的位置,则此数字出现了一次。
题目分析
- 获取多行数据。
- 把获取的字符转换成整数。
- 判断数字第一次出现的位置是否等于数字最后一次出现的位置。
- 若相等,输出此数字。
var input = readline().split(" "); var n = parseInt(input[0]); var k = parseInt(input[1]); var str = readline().split(" "); var arr = []; for(let i=0;i<str.length;i++){ arr.push(parseInt(str[i])); } var res = []; for(let i=0;i<arr.length;i++){ if(arr.indexOf(arr[i]) == arr.lastIndexOf(arr[i])){ res.push(arr[i]); } } print(res[0]);
61.在其它数出现次数都为偶数的数组中找到出现次数为奇数次的数
题目链接
题目描述
给一个数组arr,其中只有一个数出现了奇数次,其它数出现了偶数次,打印这个数。
输入描述
输出包含两行,第一行包含一个整数n(1≤n≤10^5),代表数组arr长度,第二行有n个数,代表数组arr,arr[i] 为32位整数arri为32位整数。
输出描述
输出一个整数,代表出现次数为奇数次的那个数。
示例1
输入
5 3 1 3 1 2
输出
2
示例2
输入
3 6 6 3
输出
3
备注
时间复杂度O(n)O(n),额外空间复杂度O(1)O(1)。
关键技术
按位异或运算
题目分析
- 获取输入的多行数据;
- 相同的数字取异或为0,不同的数字取异或为1,所以arr中所有数字的异或值为出现奇数次的数字;
var n = parseInt(readline()); var arr = readline().split(' '); var res = []; for(let i=0;i<n;i++){ res ^= arr[i]; } print(res);