Python已矣数组条目判断赌钱赚钱app
任务要求
对一个整数数组,淌若整数数组中存在不异元素且不异元素均不相邻,函数复返字符"01";淌若整数数组每个元素均不交流且偶数元素个数大于奇数元素个数,函数复返字符"02";淌若整数数组均不悦足上述两个条目,函数复返字符"03"。举例:数组[2, 2, 5, 3, 5],复返成果是'01'。
给定一个整数数组nums,判断其属性并复返相应的字符成果:
条目一:数组中存在不异元素且所有这个词不异元素均不相邻。条目二:数组中所有这个词元素均不交流且偶数元素个数大于奇数元素个数。默许条目:若上述两个条目均不悦足,则复返"03"。
举例:
✔ 输入:nums = [2, 2, 5, 3, 5],输出:"01"(因为数组中存在不异元素且不异元素均不相邻)。
✔ 输入:nums = [1, 3, 5, 7],输出:"02"(因为所有这个词元素均不交流且偶数个数为0,小于奇数个数4)。
✔ 输入:nums = [1, 2, 3, 4],输出:"03"(因为既莫得不异元素,也莫得偶数个数大于奇数个数)。
任务分析
任务不错分为以下几个才能:
1.搜检条目一:
最初遍历数组,搜检是否存在不异元素。淌若存在不异元素,则进一步搜检这些不异元素是否不相邻。淌若满足上述两个条目,则复返"01"。
2.搜检条目二:
淌若条目一不悦足,则搜检数组中所有这个词元素是否独一。淌若所有这个词元素独一,则统计偶数和奇数的个数。淌若偶数个数大于奇数个数,则复返"02"。
3.默许情况:
淌若上述两个条目均不悦足,则复返"03"。
任求已矣
法子一:基础已矣
def judge_array_properties(nums): # 搜检条目一:是否存在不异元素且所有这个词不异元素均不相邻 seen = {} has_duplicate = False for i in range(len(nums)): if nums[i] in seen: # 搜检不异元素是否相邻 if i - seen[nums[i]] != 1: has_duplicate = True else: # 存在相邻的不异元素,径直跳过条目一 break seen[nums[i]] = i if has_duplicate: return "01" # 搜检条目二:所有这个词元素均不交流且偶数个数 > 奇数个数 if len(seen) == len(nums): even_count = 0 odd_count = 0 for num in nums: if num % 2 == 0: even_count += 1 else: odd_count += 1 if even_count > odd_count: return "02" # 默许情况 return "03"# 测试案例test_cases = [ [2, 2, 5, 3, 5], # 条目一满足,复返 "01" [1, 3, 5, 7], # 条目二满足,复返 "02" [1, 2, 3, 4], # 两个条目均不悦足,复返 "03"]for case in test_cases: print(f"数组:{case},成果: {judge_array_properties(case)}")
诠释:
1.启动化变量:
seen:用于纪录每个元素过火终末一次出现的索引。has_duplicate:绚丽是否存在不异元素。adjacent_duplicate:绚丽是否存在相邻的不异元素。
2.遍历数组:
关于每个元素,搜检其是否还是在seen中。淌若还是存在,则搜检面前索引与之前索引的差是否为1(等于否相邻)。淌若相邻,则确立adjacent_duplicate绚丽为True并阻隔轮回。淌若不相邻,则确立has_duplicate绚丽为True。
3.搜检条目一:
淌若has_duplicate为True且adjacent_duplicate为False,则复返"01"。
4.搜检条目二:
淌若所有这个词元素独一(即len(seen) == len(nums)),则统计偶数和奇数的个数。淌若偶数个数大于奇数个数,则复返"02"。
5.默许情况:
淌若上述两个条目均不悦足,则复返"03"。
法子二:优化已矣
def judge_array_properties_optimized(nums): # 搜检条目一:是否存在不异元素且所有这个词不异元素均不相邻 seen = {} has_duplicate = False adjacent_duplicate = False for i in range(len(nums)): if nums[i] in seen: # 搜检是否相邻 if i - seen[nums[i]] == 1: adjacent_duplicate = True break else: has_duplicate = True seen[nums[i]] = i if has_duplicate and not adjacent_duplicate: return "01" # 搜检条目二:所有这个词元素均不交流且偶数个数 > 奇数个数 if len(seen) == len(nums): even_count = sum(1 for num in nums if num % 2 == 0) odd_count = len(nums) - even_count if even_count > odd_count: return "02" # 默许情况 return "03"# 测试案例test_cases = [ [2, 2, 5, 3, 5], # 条目一满足,复返 "01" [1, 3, 5, 7], # 条目二满足,复返 "02" [1, 2, 3, 4], # 两个条目均不悦足,复返 "03"]for case in test_cases: print(f"数组:{case},成果: {judge_array_properties_optimized(case)}")
运行成果:
优化点:
在遍历数组时,同期纪录是否存在不异元素和相邻不异元素。通过提前阻隔轮回来优化性能。
运行成果
数组:[2, 2, 5, 3, 5],成果: 03
数组:[1, 3, 5, 7],成果: 03
数组:[1, 2, 3, 4],成果: 03
进度已戒指赌钱赚钱app,退出代码为 0