| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 面试算法-哈希表|利用python实现哈希表的解法的讲解 -> 正文阅读 |
|
[数据结构与算法]面试算法-哈希表|利用python实现哈希表的解法的讲解 |
其实哈希表在python中实现就是字典。 1.给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到) 解释:每次将tsrget的值与数组中的每个值求差值,然后在hash中找插值是否存在,若不在就存入,若在就提取下标。
2.给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。保证数组输入非空,且保证有解 解释:遍历整个数组,将每个数值写入哈希表中,然后次数为1,若数值在表中,则次数加1,在判断是否为长度的一半。若数值不在表中,则重新写入。
3.一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。提示:输出时按非降序排列。 解释:遍历两次数组,第一次记录每个数字出现的次数,第二次查看hash中的次数,是否为1,若为1则取该值出来,最后利用sort进行升序处理。
4.给定一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。 解释:第一步遍历整个数组,统计每个数字出现的次数存入hash,防止重复浪费资源。遍历hash,从最小正整数1开始,依次递增,看是否在hsah,若在就+1,若不在就返回该最小正整数。
5.给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。三元组(a、b、c)中的元素可以按任意顺序排列。解集中不能包含重复的三元组。 解释:1.排序,这一步非常的关键,就是如果我们先选左一数为负target,找其他俩数的和等于target。若最左二加最右一大于target,则从右往左。若最左二加最右一小于target,则从左往右。(因为其他就不可能了,好好理解这个排序) ?2.就是去重复,target的重复,可以在前面遍历的时候去除。后面二者和的重复值,左边就再往左推一个,右边就再往右推一个,看是否相等。 3.双指针,在python里面很简单,就是遍历数组的下标。(理解如何遍历就可以)
其中有些不理解的可以发邮箱hanbinbin0624@163.com,可以交流。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:30:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |