E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
----程序员面试金典
10.11 峰与谷
《
程序员面试金典
》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。
曹二
·
2020-07-12 21:27
程序员面试金典第六版习题
【
程序员面试金典
】01.04. 回文排列
1.题目给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-permu
有限自动机
·
2020-07-12 14:55
#
程序员面试金典
OJ
程序员面试金典
:回文排列
回文排列题目描述我的解题题目描述给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。我的解题classSolution{public:boolcanPermutePalindrome(strings){intl=s.length();if(lrecord(26,0);for(autostr:s
我的喵喵找不到了
·
2020-07-11 16:01
C++
leetcode
算法
程序员面试金典
- 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)
1.题目给定一份单词的清单,设计一个算法,创建由字母组成的面积最大的矩形,其中每一行组成一个单词(自左向右),每一列也组成一个单词(自上而下)。不要求这些单词在清单里连续出现,但要求所有行等长,所有列等高。如果有多个面积最大的矩形,输出任意一个均可。一个单词可以重复使用。示例1:输入:["this","real","hard","trh","hea","iar","sld"]输出:["this",
Michael阿明
·
2020-07-11 15:28
《程序员面试金典》
程序员面试金典
- 面试题 16.22. 兰顿蚂蚁(deque模拟)
1.题目一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时,网格全白,蚂蚁面向右侧。每行走一步,蚂蚁执行以下操作。(1)如果在白色方格上,则翻转方格的颜色,向右(顺时针)转90度,并向前移动一个单位。(2)如果在黑色方格上,则翻转方格的颜色,向左(逆时针方向)转90度,并向前移动一个单位。编写程序来模拟蚂蚁执行的前K个动作,并返回最终的网格。网格由数组表示,每个元素是一个字符串,代表网格中的一行
Michael阿明
·
2020-07-11 15:28
《程序员面试金典》
程序员面试金典
- 面试题 17.17. 多次搜索(Trie树)
文章目录1.题目2.解题2.1暴力超时2.2Trie树1.题目给定一个较长字符串big和一个包含较短字符串的数组smalls,设计一个方法,根据smalls中的每一个较短字符串,对big进行搜索。输出smalls中的字符串在big里出现的所有位置positions,其中positions[i]为smalls[i]出现的所有位置。示例:输入:big="mississippi"smalls=["is"
Michael阿明
·
2020-07-11 15:57
《程序员面试金典》
程序员面试金典
: 9.7数学与概率 7.7有些数的素因子只有3,5,7,请设计一个算法,找出其中第k个数
#include#includeusingnamespacestd;/*问题:有些数的素因子只有3,5,7,请设计一个算法,找出其中第k个数。分析:第k个数是指第k小的数吧?这个题目应该是剑指offer或编程之美中的丑数。丑数的关键是寻找下一个丑数,下一个丑数=在之前生成的丑数数组中寻找一个数*(3或5或7),即大于当前丑数的最小值设当前丑数为M设第一个乘以3大于M的数为M3,同理M5,M7,则M
天地一扁舟
·
2020-07-11 14:53
程序员面试金典
[Leetcode][
程序员面试金典
][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]
【问题描述】[中等]【解答思路】1.动态规划动态规划流程第1步:设计状态dp[i]表示字符串的前i个字符的最少未匹配数。第2步:状态转移方程假设当前我们已经考虑完了前i-1个字符了,对于前i个字符对应的最少未匹配数:第i个字符未匹配,则dp[i]=dp[i+1]+1,即不匹配数加1;遍历前i-1个字符,若以其中某一个下标j为开头、以第i个字符为结尾的字符串正好在词典里,则dp[i]=min(dp[
CryptWinter
·
2020-07-11 04:01
刷题
java
程序员面试金典
java
动态规划
字符串哈希
Trie
【
程序员面试金典
】有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。
题目描述有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。给定一个数intk,请返回第k个数。保证k小于等于100。测试样例:3返回:7不懂为啥这样。。。。classKthNumber{public:intfindKth(intk){//writecodeherevectorres(k+1); inti=0,j=0,t=0; res[0]=1;
HelloZEX
·
2020-07-10 21:09
程序员面试金典/
编程测试题
/
ACM
程序员面试金典
- 面试题 17.13. 恢复空格(DP+Trie树)
文章目录1.题目2.解题2.1动态规划2.2Trie树1.题目哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"Iresetthecomputer.Itstilldidn’tboot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不
Michael阿明
·
2020-07-10 17:26
《程序员面试金典》
程序员面试金典
- 面试题 03.05. 栈排序(两栈)
1.题目栈排序。编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek和isEmpty。当栈为空时,peek返回-1。示例1:输入:["SortedStack","push","push","peek","pop","peek"][[],[1],[2],[],[],[]]输出:[nul
Michael阿明
·
2020-07-07 20:06
《程序员面试金典》
程序员面试金典
——解题总结: 9.18高难度题 18.12给定一个正整数和负整数组成的N*M矩阵,编写代码找出元素总和最大的子矩阵。
#include#includeusingnamespacestd;/*问题:给定一个正整数和负整数组成的N*M矩阵,编写代码找出元素总和最大的子矩阵。分析:暴力破解:遍历所有子矩阵耗时O(N^4),对每个子矩阵求和耗时O(N^2),总共耗时O(N^6)动态规划:可以使得对子矩阵求和的时间复杂度降至O(1)。|AB|假设左边为矩阵,那么area(D)=ValD-ValB-ValC+ValA|CD|
天地一扁舟
·
2020-07-07 19:07
程序员面试金典
程序员面试金典
,牛课网在线编程题目答案(1)
程序员面试金典
,牛课网在线编程题目答案(1)题目地址点击打开链接//请实现一个算法,确定一个字符串的所有字符是否全都不同。//这里我们要求不允许使用额外的存储结构。
liuyanfeier
·
2020-07-07 14:54
★面试经典问题
--------【经典算法】
《
程序员面试金典
》题解
程序员面试金典
-渐进式题解本题解意在提供每道题目从小白能想到的方法,逐步到(近乎)最优方法,并且一一给出代码。欢迎讨论和指出错误。
weixin_34197488
·
2020-07-06 00:00
LeetCode之
程序员面试金典
(持续更新~)
程序员面试金典
01.01、判断字符是否唯一01.02、判定是否互为字符重排01.03、URL化问题解答整理,用到算法方恨少,对于数据优化,提升执行速度体验有很大帮助~欢迎补充新的思路,和更优解决。
itmonkeyws
·
2020-07-05 09:35
算法
leetcode
面试
算法
js算法
javascript
程序员面试金典
2.2 链表中倒数第k个结点
题目输入一个链表,输出该链表中倒数第k个结点。我的题解classSolution{public:ListNode*FindKthToTail(ListNode*pListHead,unsignedintk){ListNode*fast=pListHead;ListNode*slow=pListHead;intcount=0;while(fast!=NULL){count++;fast=fast->
肆乐雨
·
2020-07-05 03:39
Algorithm
程序员
链表
面试
程序员面试金典
- 面试题 17.26. 稀疏相似度(哈希map)
1.题目两个(具有不同单词的)文档的交集(intersection)中元素的个数除以并集(union)中元素的个数,就是这两个文档的相似度。例如,{1,5,3}和{1,7,2,3}的相似度是0.4,其中,交集的元素有2个,并集的元素有5个。给定一系列的长篇文档,每个文档元素各不相同,并与一个ID相关联。它们的相似度非常“稀疏”,也就是说任选2个文档,相似度都很接近0。请设计一个算法返回每对文档的I
Michael阿明
·
2020-07-05 03:54
《程序员面试金典》
程序员面试金典
- 面试题 16.09. 运算(只用+法做乘除)
1.题目请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字,程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。你的实现应该支持如下操作:Operations()构造函数minus(a,b)减法,返回a-bmultiply(a,b)乘法,返回a*bdivide(a,b)除法,返回a/b示例:Operationsoperations=newOperations(
Michael阿明
·
2020-07-05 03:54
《程序员面试金典》
程序员面试金典
- 面试题 17.15. 最长单词(排序+递归)
1.题目给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。示例:输入:["cat","banana","dog","nana","walk","walker","dogwalker"]输出:"dogwalker"解释:"dogwalker"可由"dog"和"walk
Michael阿明
·
2020-07-05 03:54
《程序员面试金典》
程序员面试金典
- 面试题 16.19. 水域大小(BFS/DFS)
1.题目你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。示例:输入:[[0,2,1,0],[0,1,0,1],[1,1,0,1],[0,1,0,1]]输出:[1,2,4]提示:0water;queue>q;v
Michael阿明
·
2020-07-05 03:24
《程序员面试金典》
程序员面试金典
- 面试题 17.07. 婴儿名字(并查集)
1.题目每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John和Jon本质上是相同的名字,但被当成了两个名字公布出来。给定两个列表,一个是名字及对应的频率,另一个是本质相同的名字对。设计一个算法打印出每个真实名字的实际频率。注意,如果John和Jon是相同的,并且Jon和Johnny相同,则John与Johnny也相同,即它们有传递和对称
Michael阿明
·
2020-07-05 03:24
《程序员面试金典》
程序员面试金典
- 面试题 10.11. 峰与谷(排序/不排序)
1.题目在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5,8,2,6,3,4,3}中,{8,6}是峰,{3,2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入:[5,3,1,2,3]输出:[5,1,3,2,3]提示:nums.length&nums){sort(nums.rbegin(),nums.rend())
Michael阿明
·
2020-07-05 03:24
《程序员面试金典》
程序员面试金典
- 面试题 17.05. 字母与数字(哈希map+思维转换)
1.题目给定一个放有字符和数字的数组,找到最长的子数组,且包含的字符和数字的个数相同。返回该子数组,若存在多个最长子数组,返回左端点最小的。若不存在这样的数组,返回一个空数组。示例1:输入:["A","1","B","C","D","2","3","4","E","5","F","G","6","7","H","I","J","K","L","M"]输出:["A","1","B","C","D",
Michael阿明
·
2020-07-05 03:24
《程序员面试金典》
程序员面试金典
- 面试题 08.11. 硬币(背包DP)
文章目录1.题目2.解题1.题目硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入:n=5输出:2解释:有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入:n=10输出:4解释:有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+
Michael阿明
·
2020-07-05 03:23
《程序员面试金典》
程序员面试金典
- 面试题 16.11. 跳水板(数学)
1.题目你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter=1longer=2k=3输出:{3,4,5,6}提示:0divingBoard(intshorter,intlonger,intk){if(k==0)
Michael阿明
·
2020-07-05 03:23
《程序员面试金典》
程序员面试金典
- 面试题 16.02. 单词频率(哈希表/Trie树)
文章目录1.题目2.解题2.1哈希解法2.2Trie树1.题目设计一个方法,找出任意指定单词在一本书中的出现频率。你的实现应该支持如下操作:WordsFrequency(book)构造函数,参数为字符串数组构成的一本书get(word)查询指定单词在数中出现的频率示例:WordsFrequencywordsFrequency=newWordsFrequency({"i","have","an","
Michael阿明
·
2020-07-05 03:23
《程序员面试金典》
程序员面试金典
- 面试题 16.05. 阶乘尾数(5的因子)
1.题目设计一个算法,算出n阶乘有多少个尾随零。示例1:输入:3输出:0解释:3!=6,尾数中没有零。示例2:输入:5输出:1解释:5!=120,尾数中有1个零.说明:你算法的时间复杂度应为O(logn)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/factorial-zeros-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业
Michael阿明
·
2020-07-05 03:23
《程序员面试金典》
程序员面试金典
- 面试题 16.17. 连续数列(DP/分治)
1.题目给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。示例:输入:[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,为6。进阶:如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contiguous-seq
Michael阿明
·
2020-07-05 03:23
《程序员面试金典》
《
程序员面试金典
》部分题目
1.3字符串确定两个字符串同构StringA的字符重新排列后,能否变成StringB详细importjava.util.*;publicclassSame{publicbooleancheckSam(StringstringA,StringstringB){//writecodehereif(stringA.length()!=stringB.length())returnfalse;int[]r
枝叶淡
·
2020-07-04 08:25
算法题
程序员面试金典
程序员面试金典
16.17
ContiguousSequence:求数组中子序列的最大和。如果将相邻的正负数合并求和,那么就得到了一个正负数相间的序列。接下来考察每一个元素:如果累加和加上当前元素后依然是正数,那么和后面的正数求和后一定会更大,最大和子序列可以包括这个元素如果累加和加上当前元素后是负数,那么和后面的正数求和后一定更小,所以最大子序列和不应该包括这个元素这种方法对于未合并之前的数组也适用,注意在力扣上,空数组要
RayoNicks
·
2020-07-04 07:29
《程序员面试金典》
程序员面试金典
16.15
MasterMind:根据答案solution以及猜测guess,判断猜中和伪猜中的数量。先计算猜中,同时统计未猜中的频次,最后根据频次统计伪猜中。classSolution{public:vectormasterMind(stringsolution,stringguess){vectorans(2,0);mapm;for(size_ts=0;ssecond--;if(iter->second=
RayoNicks
·
2020-07-04 07:28
《程序员面试金典》
程序员面试金典
3.4
QueueviaStacks:使用两个栈实现队列。队列的特点是先进先出,栈的特点是先进后出,所以pop()操作应该和入栈顺序相反,这样第二个栈就派上用场了。在pop()时可以将元素全部导入第二个栈中,然后对第二个栈进行pop()操作,最后再将元素全部倒回去。这种方法虽然可行,但是来回倒腾元素会产生很多无意义的操作,所以可以采取较为懒惰的方法,让元素在第二个栈里先放着。classMyQueue{pr
RayoNicks
·
2020-07-04 07:28
《程序员面试金典》
程序员面试金典
16.14
BestLine:给定平面上n个点,找出一条直线,使其通过的点数最多。书上的解法:求出两两相连后的斜率,平行线归为一类,在平行线中找重合的直线。由于存在浮点数误差,斜率差值小于epsilon的也算做平行线。由于力扣上的输入都是整数,所以不用考虑epslion的问题。要求返回序号最小的两个点,所以对于同一斜率的平行线,只统计在它后面被添加的平行线上的点就可以了,但是要注意判重。根据这两点调整了一下书
RayoNicks
·
2020-07-04 07:28
《程序员面试金典》
程序员面试金典
16.16
SubSort:在整数序列中求出一个最短区间[m,n],满足将该区间内的数据升序排序后,整个序列都升序。根据题意,如果对[m,n]之间的数据进行排序就可以使整个序列有序,那么区间[0,m)和下标大于n的数据都应该是有序的,所以应该先找出开头和结尾的升序序列。这样序列就分为了3部分,left、middle和right,m或者middle中第一个元素的下标,或者是left中的某一个元素的下标,所以应该
RayoNicks
·
2020-07-04 07:28
《程序员面试金典》
程序员面试金典
2.1
RemoveDups:删除未排序链表中的重复元素。如果不使用额外的存储空间应该怎么做?为了删除链表中的重复元素,必须要对链表进行遍历。可以将已经遍历过的元素存储在一个集合中,如果再次出现相同的元素,就将其删除。这种方法的时间复杂度为O(N)。/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*List
RayoNicks
·
2020-07-04 07:28
《程序员面试金典》
程序员面试金典
16.13
BisectSquares:给定两个正方形和一个二维平面,求一条平分两个正方形的最长线段,如果有多条线段,返回斜率最大的一条的两端点。这条线段肯定过这两个正方形的中心,根据这两个中心确定一条直线,然后求4个交点,选择最远的两个就好了。注意斜率为无穷大的问题,以及交点的求法。如果斜率在[-1,1]之间,则交于正方形左右两边,如果斜率在[-∞,-1]∪[1,+∞],则交于正方形上下两边。classSo
RayoNicks
·
2020-07-04 07:28
《程序员面试金典》
程序员面试金典
——3.6双栈排序
此题本意是对一个栈中的数据进行排序,最多用另一个栈来缓存。但在牛客网上利用vector来模拟栈,还规定只能访问头元素。。。题目原意:编写程序,按升序对栈进行排序(即最大元素位于栈顶)。最多只能用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中(如数组)。classTwoStacks{public:vectortwoStacksSort(stacknums){//利用两个栈排序stackn
Allenlzcoder
·
2020-07-04 04:31
程序员面试金典题目笔记
程序员面试金典
- 面试题 16.16. 部分排序(排序/不排序)
文章目录1.题目2.解题2.1排序2.2不排序1.题目给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。示例:输入:[1,2,4,7,10,11,7,12,6,7,16,18,19]输出:[3,9
Michael阿明
·
2020-07-04 01:02
《程序员面试金典》
程序员面试金典
- 面试题 17.18. 最短超串(双指针+哈希)
1.题目假设你有两个数组,一个长一个短,短的元素均不相同。找到长数组中包含短数组所有的元素的最短子数组,其出现顺序无关紧要。返回最短子数组的左端点和右端点,如有多个满足条件的子数组,返回左端点最小的一个。若不存在,返回空数组。示例1:输入:big=[7,5,9,0,2,1,3,5,7,9,1,1,5,8,8,9,7]small=[1,5,9]输出:[7,10]示例2:输入:big=[1,2,3]s
Michael阿明
·
2020-07-04 01:02
《程序员面试金典》
程序员面试金典
- 面试题 16.10. 生存人数(自定义优先队列)
文章目录1.题目2.解题2.1优先队列2.2双指针1.题目给定N个人的出生年份和死亡年份,第i个人的出生年份为birth[i],死亡年份为death[i],实现一个方法以计算生存人数最多的年份。你可以假设所有人都出生于1900年至2000年(含1900和2000)之间。如果一个人在某一年的任意时期都处于生存状态,那么他们应该被纳入那一年的统计中。例如,生于1908年、死于1909年的人应当被列入1
Michael阿明
·
2020-07-04 01:02
《程序员面试金典》
程序员面试金典
- 面试题 16.18. 模式匹配(逻辑题)
1.题目你有两个字符串,即pattern和value。pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例
Michael阿明
·
2020-07-02 16:23
《程序员面试金典》
程序员面试金典
- 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**
1.题目从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组。示例:给定如下二叉树2/\13返回:[[2,1,3],[2,3,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bst-sequences-lcci著作权归领扣网络所有。商业转载请联系官方授权
Michael阿明
·
2020-07-02 16:22
《程序员面试金典》
程序员面试金典
- 面试题 04.10. 检查子树(双重递归)
1.题目检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断T2是否为T1的子树。如果T1有这么一个节点n,其子树与T2一模一样,则T2为T1的子树,也就是说,从节点n处把树砍断,得到的树与T2完全相同。示例1:输入:t1=[1,2,3],t2=[2]输出:true示例2:输入:t1=[1,null,2,4],t2=[3,2]输出:false提示:树的节点数
Michael阿明
·
2020-07-02 16:22
《程序员面试金典》
程序员面试金典
- 面试题 10.03. 搜索旋转数组(二分查找)
1.题目搜索旋转数组。给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详。请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。示例1:输入:arr=[15,16,19,20,25,1,3,4,5,7,10,14],target=5输出:8(元素5在该数组中的索引)示例2:输入:arr=[15,16,19,20,25,1,3
Michael阿明
·
2020-07-02 16:22
《程序员面试金典》
程序员面试金典
- 面试题 02.01. 移除重复节点(哈希set)
1.题目编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1,2,3,3,2,1]输出:[1,2,3]示例2:输入:[1,1,1,1,2]输出:[1,2]提示:链表长度在[0,20000]范围内。链表元素在[0,20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems
Michael阿明
·
2020-07-02 16:22
《程序员面试金典》
程序员面试金典
: 9.13 C和C++ 13.9编写对齐的malloc和free函数。
#include#includeusingnamespacestd;/*问题:编写支持对齐分配的malloc和free函数,分配内存时,malloc函数返回的地址必须能被2的n次方整除分析:malloc原型是:void*malloc(intsize),free(void*ptr)。地址能被2^n整除,因此根据给定的size,要计算size<=2^n,其中n为整数,比如6<=2^3,因此分配的字节为
天地一扁舟
·
2020-07-02 15:23
程序员面试金典
程序员面试金典
: 9.11 排序与查找 11.1给定两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B合入A并排序。
#include#includeusingnamespacestd;/*问题:给定两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B合入A并排序。分析:排序分为:比较排序,插入排序,归并排序,快速排序,堆排序等。比较排序:通过元素之间两两比较进行排序,典型的有:冒泡排序,堆排序插入排序:找到待排序的位置,将选择好的值插入该位置。典型的有:简单选择排序,从数组中选则最小的放在
天地一扁舟
·
2020-07-02 15:23
程序员面试金典
程序员面试金典
笔记
面试题01.01判断字符串中字符是否唯一遇到题目,先想需要考虑的情况:字符串是ASCII字符串还是Unicode字符串?假设为ASCII。首先得有字符串长度判定,超出长度后直接false。思路主要是使用位向量的方法。我们可以使用一个int类型的变量(下文用checker表示)来代替长度为26的bool数组。。假设这个变量占26个bit(在多数语言中,这个值一般不止26),那么我们可以把它看成000
谜底666
·
2020-07-02 12:24
数据结构
程序员面试金典
--题目解析-2.1 移除未排序链表中的重复结点
2.1题目:移除未排序链表中的重复结点进阶:不使用额外的数据结构解法:使用额外数据结构的解法:遍历链表,如果不存在该key,使用map存储key为node.item;value为true的数据,如果存在该key则删除该结点publicstaticvoiddeleteDuplicateNode1(Nodehead){HashMapmap=newHashMapcurrent=head;Nodeprev
GNin_99
·
2020-07-02 06:42
算法与数据结构
程序员面试金典
--题目解析-3.3 实现数据结构SetOfStacks,维护多个栈
3.3题目:基础:设想有一堆盘子,堆太高可能会倒下来。因此在现实生活中,盘子堆到一定高度后,我们会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。SetOfStacks由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks的push和pop方法应和普通栈逻辑相同,即push加入到最新栈,pop从最新的栈弹出。进阶:实现一个popAt(intindex)方法,
GNin_99
·
2020-07-02 06:42
算法与数据结构
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他