
大厂面试题
武魂殿007
这个作者很懒,什么都没留下…
展开
-
C++实现前缀树
文章目录前缀树1 什么是Trie树2 树的构建与查询3 Trie树的应用4 C++实现Trie树,以及解决一些字符串问题前缀树1 什么是Trie树 Trie树,即前缀树,又称单词查找树,字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。Trie树的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。原创 2021-08-24 15:19:41 · 407 阅读 · 0 评论 -
给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合
题目:给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合,并给出时间复杂度。假设数组是[3,5,3,5],目标值是8。答案是否可重复,题里没说,所以分3种情况,如下:1.重复。答案是【0,1】【0,3】【1,2】【2,3】,序号组合,共4种组合。解法如下:1.1.嵌套遍历。时间复杂度:O(n^2)。1.2.哈希法。键存数组元素值,值存出现次数。时间复杂度:O(n)。1.3.排序+双指针夹逼。时间复杂度:O(nlogn)。2.半重复。答案是【0,1】【2,3】,也可能是【原创 2021-08-20 20:28:44 · 1901 阅读 · 0 评论 -
设计一个LRU(最近最少使用)缓存结构
描述设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值提示:1.某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的,然后都会刷新缓存。2.当缓存的大小超过K时,移除最不经常使用的记录。3.输入一个二维数组与K,二维数组每一维有2个或者3个数字,第1个数字为opt,第2,3个数字为key,value若opt=1原创 2021-08-20 23:43:03 · 638 阅读 · 0 评论 -
判断给定的链表中是否有环,如果有环则返回true,否则返回false
描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?输入分为2部分,第一部分为链表,第二部分代表是否有环,然后回组成head头结点传入到函数里面。-1代表无环,其他的数字代表有环,这些参数解释仅仅是为了方便读者自测调试示例1输入:{3,2,0,-4},1返回值:true说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1,即-4->2存在一个链接,组成传入的head为一个带环的链表 ,返回true示例原创 2021-08-20 23:34:50 · 738 阅读 · 0 评论 -
假设我们有不同面值(1,3,5)的硬币若干枚,怎样用最少的硬币数凑够11元
问题描写叙述:假设我们有不同面值(1,3,5)的硬币若干枚,怎样用最少的硬币数凑够11元?思路问题动态规划算法的核心是:每一个子问题的状态和状态的转移方程。状态是:dp[i] ,即凑够i元最少须要的硬币的个数转移方程是:dp[i] = min(dp[i-C1]+1,dp[i-C2]+1,dp[i-C3]+1,……,dp[i-Cj]+1])即。每一个状态的值都是最小的那个。编写代码说明:通过递归函数dp_fun实现了对状态数组dp的初始化#include<iostream>u原创 2021-08-20 20:18:57 · 677 阅读 · 0 评论