您的位置:首页 > 文旅 > 美景 > 网站广告图片在线制作_设计师培训基地_宁波优化网站哪家好_点击seo软件

网站广告图片在线制作_设计师培训基地_宁波优化网站哪家好_点击seo软件

2025/2/25 0:33:06 来源:https://blog.csdn.net/A143754/article/details/145792094  浏览:    关键词:网站广告图片在线制作_设计师培训基地_宁波优化网站哪家好_点击seo软件
网站广告图片在线制作_设计师培训基地_宁波优化网站哪家好_点击seo软件

两个数组的交集

题意:

给定两个数组,编写一个函数来计算它们的交集。

示例:

说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。

思路:

首先我们应该分析题意,这里是不看重复的数字的,所以如果使用set,可以很好的实现去重的情况,同时,若存储的值可能很大,数组的下标是比较有限制的,并且如果用很大的下标,就会浪费很多的存储空间,那么使用数组就不太合理了。

set使用条件:

要求没有重复数字的时候

下标极大,没有极限的时候

我们这里使用的是unordered set(已经帮我们做去重了),

因为这种形式的set做映射和取值的时候效率都最高

代码:

直接使用集合:

from typing import List
# 两个数组的交集
class jiaoji:def find_xiangtong(self,nums1: List[int], nums2: List[int]) -> List[int]:return list(set(nums1) & set(nums2))nums1 = [1,2,3,4,3,3,12,2]
nums2 = [1,4,32,11,23,3,3,222]inst = jiaoji()
list_1 = inst.find_xiangtong(nums1,nums2)
print(nums1)
print(nums2)
print(list_1)

使用数组:

from typing import List
#若使用数组
class find_shuzu:def shuzu(self,nums:List[int],nums1:List[int])->None:count1 = [0]*1001count2 = [0]*1001result = [0]*100for i in range(len(nums)):count1 [nums[i]-1]+=1for j in range(len(nums1)):count2 [nums1[j]-1]+=1if len(nums)<len(nums1):a = len(nums)else:a = len(nums1)for i in range(0,a):if count1[i]*count2[i] !=0:result[i]=1print(result)nums1 = [1,2,3,4,3,3,12,2]
nums2 = [1,4,32,11,23,3,3,222]inst1 = find_shuzu()
inst1.shuzu(nums1,nums2)

快乐数

题意:

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为  1,那么这个数就是快乐数。

如果 n 是快乐数就返回 True ;不是,则返回 False 。

示例:

输入:19
输出:true
解释:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

思路:

这道题目看上去貌似一道数学问题,其实并不是!

题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很重要!

我还是希望作为小白来说,大家对代码的掌控力能提高,并且可以快速的写出代码

在这里就用个最简单的办法吧:

x = int(input("希望证明的数:"))sum = 0
x_he = 0
judge = 1
while judge!=0:sum = sum+(x%10)*(x%10)x_he = x_he+x%10x = x/10if x<10:sum = sum+(x%10)*(x%10)x_he = x_he + x % 10judge = 0
if sum == x_he:print("是快乐数")
else:print("不是快乐数")

代码思路很简单,大家看代码就好啦

两数之和

题意:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

思路:

1、暴力算法:

两个循环解决问题

2、哈希法:

为啥我们会想到哈希法呢?

每当我们要判断这元素是否出现过or这个元素在集合中是否出现过的时候

我们的第一反应就是哈希法

那么和我一样的小白朋友们是不是会疑惑,怎么用哈希法呢?

比如我们现在找到的元素是3,如果求和要求9,

那么我们是不是应该思考:6是否出现过了呢?

如果6在这个集合里面出现过了,那么就可以认为这是一组合适的数字了

在实现代码之前,我们需要考虑,到底要使用哪种数据结构呢?

map是最合适的数据结构,为什么呢?

因为map在python当中的实现很多都相当于使用字典。

字典是有值和键的,如何检测哪些数字可以构成和呢?

为了更好的说明,我们看下图:

接下来我们实现代码:

代码:
# 哈希表实现两数之和
s = input("请输入数组中每个位置的值,以空格为分隔:")
sum = int(input("请输入求和的值:"))arr = list(map(int,s.split( )))
l = len(arr)
result_dic = dict()# 定义一个字典
# 把数组中的值作为键,把数组的下标作为值
# result_dic = {num:index for index,num in enumerate(arr)}
# print(result_dic)
# 我们在这里换一种方法for index,value in enumerate(arr):if sum-value in result_dic:print(f"[{result_dic[sum-value]},{index}]")result_dic[value]=index

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com