数据结构 面试题

文章目录

    • 1.数组
        • 1.1 寻找数组中第二小的元素
        • 1.2 找到数组中第一个不重复出现的整数
        • 1.3合并两个有序数组
        • 1.4 重新排列数组中的正值和负值
    • 2.栈
        • 2.1 前缀表达式,中缀表达式,后缀表达式
          • 2.1.1 中缀表达式转化为后缀表达式
          • 2.1.2 中缀表达式转化为前缀表达式
        • 2.2使用栈计算后缀表达式
        • 2.3对栈的元素进行排序
        • 2.4判断表达式是否括号平衡
    • 3.队列
        • 3.1 使用队列表示栈
        • 3.2 对队列的前k个元素倒序
        • 3.3 使用队列生成从1到n的二进制数
    • 4.链表
        • 4.1 反转链表
        • 4.2检测链表中的循环
        • 4.3返回链表倒数第N个节点
        • 4.4删除链表中的重复项
    • 5.树
        • 5.1 求二叉树的高度
        • 5.2 在二叉搜索树中查找第k个最大值
        • 5.3 查找与根节点距离k的节点
        • 5.4 在二叉树中查找给定节点的祖先节点
    • 6.图
        • 6.1 实现广度和深度优先搜索
        • 6.2检查图是否为树
        • 6.3计算图的边数
        • 6.4找到两个顶点之间的最短路径
    • 7.字典树(这是一种高效的树形结构,但值得单独说明)
        • 7.1 计算字典树中的总单词数
        • 7.2 打印存储在字典树中的所有单词
        • 7.3 使用字典树对数组的元素进行排序
        • 7.4 使用字典树从字典中形成单词
        • 7.5 构建T9字典(字典树+ DFS )
    • 8.散列表(哈希表)
        • 8.1 在数组中查找对称键值对
        • 8.2 追踪遍历的完整路径
        • 8.3 查找数组是否是另一个数组的子集
        • 8.4 检查给定的数组是否不相交

1.数组

1.1 寻找数组中第二小的元素

思路:升序排序之后,输出第二个数字

1.2 找到数组中第一个不重复出现的整数

1.3合并两个有序数组

def merge_sort(a, b):
ret = []
i = j = 0
while len(a) >= i + 1 and len(b) >= j + 1:if a[i] <= b[j]:ret.append(a[i])i += 1else:ret.append(b[j])j += 1
if len(a) > i:ret += a[i:]
if len(b) > j:ret += b[j:]
return retif __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))

1.4 重新排列数组中的正值和负值

2.栈

2.1 前缀表达式,中缀表达式,后缀表达式

2.1.1 中缀表达式转化为后缀表达式

中缀表达式转后缀表达式的规则:

  • 1.遇到操作数,直接输出;
  • 2.栈为空时,遇到运算符,入栈;
  • 3.遇到左括号,将其入栈;
  • 4.遇到右括号,执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出;
  • 5.遇到其他运算符’+”-”*”/’时,弹出所有优先级大于或等于该运算符的栈顶元素,然后将该运算符入栈;
  • 6.最终将栈中的元素依次出栈,输出。
    经过上面的步骤,得到的输出既是转换得到的后缀表达式。
2.1.2 中缀表达式转化为前缀表达式

2.2使用栈计算后缀表达式

2.3对栈的元素进行排序

2.4判断表达式是否括号平衡

3.队列

3.1 使用队列表示栈

3.2 对队列的前k个元素倒序

3.3 使用队列生成从1到n的二进制数

4.链表

4.1 反转链表

4.2检测链表中的循环

4.3返回链表倒数第N个节点

4.4删除链表中的重复项

5.树

5.1 求二叉树的高度

5.2 在二叉搜索树中查找第k个最大值

5.3 查找与根节点距离k的节点

5.4 在二叉树中查找给定节点的祖先节点

6.图

6.1 实现广度和深度优先搜索

6.2检查图是否为树

6.3计算图的边数

6.4找到两个顶点之间的最短路径

7.字典树(这是一种高效的树形结构,但值得单独说明)

7.1 计算字典树中的总单词数

7.2 打印存储在字典树中的所有单词

7.3 使用字典树对数组的元素进行排序

7.4 使用字典树从字典中形成单词

7.5 构建T9字典(字典树+ DFS )

8.散列表(哈希表)

8.1 在数组中查找对称键值对

8.2 追踪遍历的完整路径

8.3 查找数组是否是另一个数组的子集

8.4 检查给定的数组是否不相交

参考:
(1) https://baijiahao.baidu.com/s?id=1609200503642486098&wfr=spider&for=pc - (应对程序员面试,你必须知道的八大数据结构)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF之无法触发KeyDown或者KeyUp键盘事件

有时候我们可能在Panel(StackPanel、Canvas、Grid)上或者是在一些默认不支持Focus的控件上添加了KeyDown或者KeyUp&#xff0c;可是残酷的现实告诉我们&#xff0c;这是无法触发的&#xff0c;怎么办呢&#xff0c;很简单&#xff0c;只需一句代码。 private void MouseLeftBut…

宣布在日本地区正式发布 Windows Azure

&#xfeff;&#xfeff;昨天&#xff0c;我与 Microsoft 日本的集团副总裁 Yasuyuki Higuchi 一同站在台上&#xff0c;宣布在两个新地区正式发布 Windows Azure&#xff1a;日本东部和日本西部。能够亲自见证 Microsoft 对日本市场的持续承诺&#xff0c;对我来说是莫大的荣…

运行cmd状态下MySQL导入导出.sql文件

MySQL导入导出.sql文件步骤如下&#xff1a; 一.MySQL的命令行模式的设置&#xff1a; 桌面->我的电脑->属性->环境变量->新建-> PATH“&#xff1b;path\mysql\bin;”其中path为MySQL的安装路径。 二.简单的介绍一下命令行进入MySQL的方法&#xff1a; 1.C:\&g…

python中的collections

文章目录deque(双向列表)defaultdict(为不存在的key设置默认值)OrderedDictOrderedDict可以实现一个FIFO&#xff08;先进先出&#xff09;的dict&#xff0c;Counter参考collections是Python内建的一个集合模块&#xff0c;提供了许多有用的集合类。deque(双向列表) 使用list…

mysql 面试点

文章目录mysql 运算符1.mysql运算符中的 !和Not的区别&#xff1f;CRUD1.条件判断的用法2. not exits 和not in 的区别3. case when语句mysql函数1.to_days()连接1.什么时候选择右连接&#xff0c;什么时候选择左连接&#xff1f;mysql 运算符 1.mysql运算符中的 !和Not的区别…

[Windows Phone] 实作不同的地图显示模式

[Windows Phone] 实作不同的地图显示模式 原文:[Windows Phone] 实作不同的地图显示模式前言 本文章主要示范如何让地图有不同的模式产生&#xff0c;例如平面图、地形图、鸟瞰图、鸟瞰图含街道等。 这部分主要是调整 Map.CartographicMode 属性&#xff0c;其中 MapCartograph…

数据库 CURD测试题【中等】

文章目录1.换座位&#xff08;交换相邻的id&#xff09;基本信息要求答案[case when]2.分数排名(分组&#xff0c;排序)基本信息要求答案3.连续出现的数字(连接)信息要求答案4.第N高的薪水(函数)信息要求答案5.各个部门工资最高的员工(分组&#xff0c;连接)信息要求答案6.统计…

[STemWin教程入门篇]第一期:emWin介绍

特别说明&#xff1a;原创教程&#xff0c;未经许可禁止转载&#xff0c;教程采用回复可见的形式&#xff0c;谢谢大家的支持。 armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立&#xff0c;链接如下&#xff1a; http://bbs.armfly.com/read.php?tid1830 SE…

python 栈【测试题】

文章目录1.删除最外层的括号信息要求答案2.棒球比赛信息示例答案3. 用栈实现队列要求说明:答案4.用队列模拟栈描述注意答案5.下一个更大的元素&#xff08;未解&#xff09;信息&#xff1a;示例&#xff1a;注意:答案&#xff1a;6.删除字符串中的所有相邻重复项信息示例&…

python从socket做个websocket的聊天室server

下面的是server端&#xff1a;把IP改成自己的局域网IP&#xff1a; #coding:utf8 import socket,select import SocketServer import hashlib,base64,time from pprint import pprint#author:lijim def f(key):skey"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"sha1hashli…

python进阶(第三章1) 字典

文章目录3.1 泛映射类型什么是可散列的数据类型&#xff08;键的要求&#xff09;字典的构造方法3.2 字典推导(dictcomp)3.3 常见的映射方法用setdefault处理找不到的键3.4 映射的弹性键查询3.4.1 defaultdict:处理找不到的键的一个选择注意&#xff1a;defaultdict与dict实例化…

python基础 list和tuple

文章目录一、list1、len()函数可以获得list元素的个数2、索引从0开始3、末尾追加 append(xx)4、也可以把元素插入到指定的位置&#xff0c;比如索引号为1的位置(insert)5、末尾删除pop() &#xff0c;并且返回该值6、要删除指定位置的元素&#xff0c;用pop(i)方法&#xff0c;…

HDU 2818 Building Block

题目连接 http://acm.hdu.edu.cn/showproblem.php?pid2818 题意:给定N个blocks&#xff0c;分在N个堆里&#xff0c;然后又P个操作&#xff0c;每次将x所在的堆放在y所在的堆上&#xff0c;或者询问x的下面有几个blocks 做法&#xff1a;带权并查集 因为要查询x的下面有多少bl…

百度社会化分享组件使用问题

今天下午玩了玩百度的社会化分享sdk,我是在这下载的sdk http://developer.baidu.com/frontia/sdk 谁知道这个下载链接是没更新的,还是1.0版本的,是尼玛13年初的版本 捣鼓了半天各种bug 然后去百度官网重新找http://developer.baidu.com/wiki/index.php?titledocs/frontia/res…

python基础 dict和set

文章目录dictset4.用集合为列表去重5.集合的增 add,update6.集合的删 discard,remove,pop,clear7 集合运算7.1 子集(<或者issubset()方法)7.2并集(|或者union()方法)7.3 交集(&或者intersection())7.4 差集(-或者difference()方法)7.5 对称集(^或者symmetric_difference…

python进阶(第三章2)字典和集合

文章目录3.8 集合论nee中的元素在haystack中出现的次数&#xff0c;可以在任何可迭代对象上3.8.1集合字面量3.8.2 集合推导3.8.3 集合操作3.9 dict和set的背后3.9.1 一个关于效率的实验3.9.2 字典中的散列表1.散列值和相等性2.散列表算法获取值&#xff1a;添加新的元素更新现有…

Android下实现GPS定位服务

1.申请Google API Key&#xff0c;参考前面文章 2.实现GPS的功能需要使用模拟器进行经纬度的模拟设置&#xff0c;请参考前一篇文章进行设置 3.创建一个Build Target为Google APIs的项目 4.修改Androidmanifest文件&#xff1a; view plain<uses-library android:name"…

python 链表 【测试题】

文章目录注意&#xff1a;实例讲解1 .链表基本功能2. 根据值删除链表中的节点信息答案&#xff1a;3.反转一个单链表信息答案4.合并两个有序链表信息答案5.删除排序链表中的重复元素信息答案6.移除链表元素信息7.环形链表信息进阶思路答案注意&#xff1a; 这里的head是只存储…

WebService应用一例,带有安全验证

1、创建WEB项目&#xff0c;添加WEB服务WebService1.asmx&#xff0c;代码如下&#xff1a; 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 using System.Web.Services;6 7 namespace WebService8 {9 /// <summary> …