3. 算法编程练习:Find the odd int

该博客介绍了一个算法问题,要求在给定的有序整数数组中找出唯一一个出现次数为奇数的元素。算法通过遍历数组,使用内置的count方法计算每个元素的出现次数,当出现次数为奇数时返回该元素。提供了两种实现方式,一种是显式循环,另一种是使用列表推导。测试用例展示了不同情况下的正确结果。
摘要由CSDN通过智能技术生成

Find the odd int

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

Example

test.assert_equals(find_it([20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5]), 5)
test.assert_equals(find_it([1,1,2,-2,5,2,4,4,-1,-2,5]), -1); 
test.assert_equals(find_it([20,1,1,2,2,3,3,5,5,4,20,4,5]), 5);
test.assert_equals(find_it([10]), 10);
test.assert_equals(find_it([1,1,1,1,1,1,10,1,1,1,1]), 10);
test.assert_equals(find_it([5,4,3,2,1,5,4,3,2,10,10]), 1);

Algorithm analysis

输入:有序数组
输出:数组中出现次数为奇数的对应的数
算法中对数据元素的操作主要是计数,然后加个奇数条件判断。初步考虑用循环遍历返回。那个值取值来自于有序数组,那是个列表。可迭代的对象都可用用生成表达式。

Algorithm details

  1. 对第一个数据元素在有序序列中出现次数进计数并判断是否为奇数;
  2. 是则结束算法,输出这个元素;
  3. 否则进入1,直至结束输出当下元素。

Code

def find_it(seq):
	for i in seq:
		if seq.count(i) % 2 != 0:#求余为0,即为偶数;这里是不等于,所以为奇数。
		#计数函数obj.count(sub(对象的子集), start=索引1,ending=索引2),
		#函数功能是返回对象子集出现的次数,索引1为开始的索引位置,索引2为结束的索引位置
			return i

or

def find_it(seq):
	return [i for i in seq if seq.count(i)%2 != 0][0]#列表生成式:
	#[i(新生成的函数表达式,这里是本身所以取i) for i in 序列名][返回新列表索引]
	#返回生成列表索引位置对应的值

Thanks for reading

题目来源:www.codewars.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值