电话:075-370950112
传真:0382-17446309
邮箱:admin@bswdjc.com
地址:江苏省宿迁市镇平县预然大楼914号
注:数据结构与算法为面试基础,基本上所有岗位都有涉及,面试中偏重焦点思路论述和手撕代码。以下试题为作者日常整理的通用高频面经,包罗题目,谜底与参考文章,接待纠正与增补。目录1.什么是链表、行列、客栈、树图?2.删除链表中重复的节点(剑指offer 83)3.两数相加(Leetcode 2)4.反转链表、环形链表、合并链表5.建立包罗min函数的栈6.二叉树的最大(最小)树深7.二叉树的遍历8.通过前序和中序推后序(重建二叉树)9.二叉树的最近公共祖先(leetcode 236)10.电话号码的字母组合(leetcode 17)11.求1+2+...+n(剑指offer 47)12.有效括号(leetcode 20)13.最长公共前缀(leetcode 14)14.排序算法有哪些?15.快速排序实现16.求TopK(堆排序)17.01背包(动态计划)18.数据流中的中位数(剑指offer 63)19.买卖股票的最佳时机(leetcode 121)20.矩阵中的最短路径(剑指offer 65)1.什么是链表、行列、客栈、树图? 链表:建立链表的历程和建立数组的历程差别,不会先划出一块一连的内存。
因为链表中的数据是不一连的,链表在存储数据的内存中有两块区域,一块区域用来存储数据,一块区域用来记载下一个数据生存在那里(指向下一个数据的指针)。当有数据进入链表时候,会凭据指针找到下一个存储数据的位置,然后把数据生存起来,然后再指向下一个存储数据的位置。这样链表就把一些碎片空间使用起来了,虽然链表是线性表,可是并不会按线性的顺序存储数据。
行列:行列是一种先进先出的数据结构,数组和链表也都可以生成行列。当数据进入到行列中时也是先进入的在下面后进入的再上面,可是出行列的时候是先从下面出,然后才是上面的数据出,最晚进入的行列的,最后出。
堆:堆是一颗完全二叉树。在这棵树中,所有父节点都满足大于即是其子节点的堆叫大根堆。
所有父节点都满足小于即是其子节点的堆叫小根堆。堆虽然是一颗树,可是通常存放在一个数组中,父节点和孩子节点的父子关系通过数组下标来确定。栈:栈是一种先进后出的数据结构,数组和链表都可以生成栈。
当数据进入到栈时会根据规则压入到栈的底部,再次进入的数据会压在第一次的数据上面,以此类推,在取出栈中的数据的时候会先取出最上面的数据,所以是先进后出。由于数组和链表都可以组成栈,所以操作特点就需要看栈是由数组还是链表生成的了,然后就会继续相应的操作特点。
树: 此处树特指二叉树(BinaryTree)。二叉树是n(n>=0)个结点的有限荟萃,该荟萃或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、划分称为根结点的左子树和右子树的二叉树组成。
二叉树的特点:每个结点最多有两棵子树。(注意:不是都需要两棵子树,而是最多可以是两棵,没有子树或者有一棵子树也都是可以的。)左子树和右子树是有顺序的,序次不能颠倒。
纵然树中某结点只有一棵子树,也要区分它是左子树还是右子树,下面是完全差别的二叉树: 图:图(Graph)是由极点的有穷非空荟萃和极点之间边的荟萃组成,通常表现为:G(V,E),其中,G表现一个图,V是图G中极点的荟萃,E是图G中边的荟萃。图有种种形状和巨细。边可以有权重(weight),即每一条边会被分配一个正数或者负数值。
2.删除链表中重复的节点(剑指offer 83) 递归解法:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 递归 def deleteDuplication(self, pHead): # write code here if pHead == None: return None if pHead.next == None: return pHead if pHead.val != pHead.next.val: pHead.next = self.deleteDuplication(pHead.next) return pHead # 后面的节点递归竣事后,返回pHead即可 else: tempNode = pHead while tempNode and tempNode.val == pHead.val: tempNode = tempNode.next return self.deleteDuplication(tempNode) # 重复节点都不留,不保留pHead,直接返回下一个差别节点的递归结点。循环解法:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def d。
本文来源:IM体育投注官网-www.bswdjc.com
电话:075-370950112
传真:0382-17446309
邮箱:admin@bswdjc.com
地址:江苏省宿迁市镇平县预然大楼914号