Find the odd int

Description:
Given an array, find the int that appears an odd number of times.There will always be only one integer that appears an odd number of times.


解法一
一般的解法,笨拙的方法,使用Map的性质,先遍历每一个元素,将元素作为key,value为它出现的次数,然后再使用Entry的方式遍历,求得value为奇数的entry的key,这个key就是需要的值
但是也不知道怎么实现

解法二
巧解(我还需要继续学习提升自己的姿势水平).方法利用了异或的性质(相同的数字异或结果为0, a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;).所以将集合中所有中数字进行异或就可以了,所有的成对的元素异或的结果为0,只剩下最后一个出现次数为奇数的元素.
代码如下:

public class FindOdd {
  public static int findIt(int[] A) {
    int xor = 0;
    for (int i = 0; i < A.length; i++) {
      xor ^= A[i];
    }
    return xor;
  }
}

解法三
错误的解法

def find_it(seq):
    for i in seq:
        if seq.count(i) % 2 != 0:
            return 1

解法四
看不懂

function findOdd(A) {
  //happy coding!
  let indecies = [];
  
  A.forEach(a => {
    let idx = A.indexOf(a);
    let index = [];
    while (idx !== -1) {
      index.push(idx);
      idx = A.indexOf(a, idx + 1);
    }
    indecies.push(index);
  });
  const a = indecies.filter(index => (index.length % 2 !== 0));
  return A[a[0][0]];
}

解法五

function findOdd(A) {
  //happy coding!
  return A.reduce((a, b) => a^b);
}

解法六
错误啊 i是元素吧 计数器隐藏
def find_it(seq):
xor = 0
for i in seq:
xor ^= seq[i]
return xor


IndexError: list index out of range的错误原因
第1种可能情况
list[index]index超出范围,也就是常说的数组越界

第2种可能情况
list是一个空的 没有一个元素
进行list[0]就会出现该错误,这在爬虫问题中很常见,比如有个列表爬去下来为空,统一处理就会报错

for循环很多时候用来遍历,一般都会由界限,例如便利一个列表时,需要获取列表的长度,则len函数可以达到此效果,然后配合for循环和range函数就可以成功便利

a = [1,2,3,4]
for i in range(len(a)):
print(a[i])
#亦可写成下面的形式
#for i in a:
print(i)

for 表达式1 in 表达式2: # 判断 表达式1 是否在表达式2所包含范围中

语句1 # 若上一句条件成立,则执行下列语句
变量:往前找到首个出现的地方


控制权(临时)转移给函数 执行直到return 或f的结束大括号 控制权返回到调用处
写函数原型时不能写形参列表 错误???可以就一样吧;可以含参数数据类型;compiler needs the infor. carried by the function prototype of the function definition b4 the function call.信息包括:返回的数据类型,函数名,参数数目和数据类型
有的情形下传递参数可以不一样
形参 局部变量 返回 都需要分配空间

int x=9.1;
这个语句会强制类型转换的,x==9

不允许函数内定义函数

extern 声明别的地方定义的函数 把有效空间引到这来了

有两种return:
void里面的,是return;
其它的要返回数据

main 也可以被调用
调用时数据类型要一致,不一致则会转换数据类型

实际参数 arguments/actual parameters
形式参数 parameters/formal paremeters

两个x没有任何关联

同一天生日的人 群里互相祝福

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值