
剑指OFFER
文章平均质量分 66
quan!!!
这个作者很懒,什么都没留下…
展开
-
剑指OFFER----43、1~n中1出现的数字(js实现)
题目思路// 最简单方法function NumberOf1Between1AndN(n) { let counts = 0 for (let i = 1; i <= n; i++) { counts += oneCounts(i) } return counts}function oneCounts(num) { let counts = 0 ...原创 2019-07-23 14:19:28 · 223 阅读 · 0 评论 -
剑指OFFER----30、包含main函数的栈(js实现)
题目定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求函数min、push以及pop的时间复杂度都是O(1)。思路原创 2019-07-10 19:58:23 · 209 阅读 · 0 评论 -
剑指OFFER----18-1、在O(1)时间内删除链表节点(js实现)
题目给定单向链表的头指针head和一个节点指针p,定义一个函数在O(1)时间删除该节点p。思路原创 2019-07-10 19:58:31 · 276 阅读 · 0 评论 -
剑指OFFER----13、机器人的运动范围(js实现)
题目地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?...原创 2019-07-10 19:21:57 · 259 阅读 · 0 评论 -
剑指OFFER----12、矩阵中的路径(js实现)
题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中间向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。举例分析例如在下面的 3*4 的矩阵中包含一条字符串“bcced”的路径。但矩阵中不包含字符串“abcb”的路径,因为字符串的第一个字符 b 占据了矩阵中的第一行第二格子之后...原创 2019-07-10 19:20:22 · 576 阅读 · 0 评论 -
剑指OFFER----17、打印从1到最大的n位数(js实现)
题目输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。思路原创 2019-07-10 19:58:35 · 509 阅读 · 0 评论 -
剑指OFFER----40-2最大的K个数(最小的K个数的变种)(js实现)
题目输入n个整数,找出其中最大的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最大的4个数字是8,7,6,5。思路求最小的K个数就建小顶堆,求最大的K个数就建大顶堆,然后不断取堆顶元素,然后再重新建堆function GetMaxestNumbers_Solution(input, k) { // write code here var startIndex = ...原创 2019-07-04 21:10:03 · 306 阅读 · 0 评论 -
剑指OFFER----46、把数字翻译成字符串(js实现)
题目给定一个数字,我们按照如下的规则把它翻译为字符串:将 0-25 分别对应翻译到 a-z 字符,如 0 翻译成 a,以此类推。一个数字可能有多少种翻译。例如,12258 有 5 种不同的翻译,分别是 “bccfi”、”bwfi”、”bczi”、”mcfi”、”mzi”。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。...原创 2019-07-10 10:37:28 · 407 阅读 · 0 评论 -
剑指OFFER----47、礼物的最大价值(js实现)
题目在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物?...原创 2019-07-10 10:35:53 · 444 阅读 · 0 评论 -
剑指OFFER----48、最长不含重复字符的子字符串(js实现)
题目请从字符串中找出一个最长的不包含重复字符串的子字符串,计算该最长子字符串的长度。假设字符串中只包含‘a’~‘z’的字符。例如,在字符串“arabcacfr”中,最长的不含重复字符的子字符串是“acfr”,长度为4。......原创 2019-07-10 10:35:03 · 694 阅读 · 0 评论 -
剑指OFFER----49、丑数(js实现)
题目把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。leetcode链接:https://leetcode-cn.com/problems/chou-shu-lcof/思路// 通俗易懂的解释:// 首先从丑数的定义我们知道,一个丑数的因子只有2,3,5,那么丑数p = 2 ^ x * 3 ^ y * 5 ^ z// 换句话说一个丑数一定由另一个丑数乘以2或原创 2019-07-10 10:32:35 · 213 阅读 · 0 评论 -
剑指OFFER----50-1、第一个只出现一次的字符(js实现)
题目原创 2019-07-10 10:31:59 · 434 阅读 · 0 评论 -
剑指OFFER----51、数组中的逆数对(js实现)
题目在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,求出这个数组中的逆序对。例如在数组 {7, 5, 6, 4} 中,一共存在 5 个逆序对,分别是 (7, 6)、(7, 5)、(7, 4)、(6, 4)和(5, 4)。...原创 2019-07-10 10:30:16 · 221 阅读 · 0 评论 -
剑指OFFER----52、两个链表的第一个公共节点(js实现)
题目输入两个链表,找出他们的第一个公共节点原创 2019-07-10 10:27:34 · 395 阅读 · 0 评论 -
剑指OFFER----56-2、数组中唯一出现一次的数字(js实现)
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现 3次。找出那个只出现了一次的元素。原创 2019-07-10 10:25:47 · 297 阅读 · 0 评论 -
剑指OFFER----56-1、数组中只出现一次的两个数字(js实现)
题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字,要求时间复杂度为O(N),空间复杂度为O(1)原创 2019-07-10 10:22:53 · 434 阅读 · 0 评论 -
剑指OFFER----33、二叉搜索树的后序遍历序列(js实现)
题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。思路...原创 2019-07-10 19:35:50 · 292 阅读 · 0 评论 -
剑指OFFER----34、二叉树中和为某一值的路径(js实现)
题目输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:node : { val, left, right}思路...原创 2019-07-10 19:58:12 · 374 阅读 · 0 评论 -
剑指OFFER----35、复杂链表的复制(js实现)
题目输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路...原创 2019-07-10 19:51:42 · 432 阅读 · 0 评论 -
剑指OFFER----54、二叉搜索树第K大结点(js实现)
题目给定一颗二叉搜索树,请找出其中的第k大的结点。思路中序遍历function KthNode(pRoot, k) { if (k <= 0 || !pRoot) { return null } let arr = [] let counts = 0 let vin = (root, arr, counts, k) =>...原创 2019-07-23 21:20:08 · 317 阅读 · 0 评论 -
剑指OFFER----53-2、0~n-1中缺失的数字(js实现)
题目一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内。在范围0-n-1内的n-1个数字有且只有一个数字不在该数组中,请找出这个数字。思路将0 到 n-1进行求和,然后减去数组的数,剩下的就是那个缺失的数,时间复杂度是O(n),显然没有利用递增排序这一特点看到递增排序,第一时间就要想到用二分查找法,提高效率,如果midItem等于下标,则表明缺失的...原创 2019-07-23 21:14:29 · 301 阅读 · 0 评论 -
剑指OFFER----53-1、数字在排序数组中出现的次数(js实现)
题目统计一个数字在排序数组中出现的次数. 例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数中出现了4次,输出4.**原创 2019-07-23 19:13:39 · 444 阅读 · 0 评论 -
剑指OFFER----10-4、矩阵覆盖(js实现)
题目我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路其实就是斐波那契数列的变形function rectCover(number){ // write code here if (number <= 2) { return number } let o...原创 2019-07-07 12:14:54 · 229 阅读 · 0 评论 -
剑指OFFER----3-1、数组中重复的数字(js实现)
题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路利用对象或者散列表或者下标检测// 解法1:下标检测function duplicate(numbers, du...原创 2019-06-30 22:10:39 · 456 阅读 · 0 评论 -
剑指OFFER----67、把字符串转换成整数(js实现)
题目将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。描述输入描述: 输入一个字符串,包括数字字母符号,可以为空输出描述: 如果是合法的数值表达则返回该数字,否则返回0示例输入:+21474836471a33输出:...原创 2019-06-30 21:47:52 · 407 阅读 · 0 评论 -
剑指OFFER----65、不用加减乘除做加法(js实现)
题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相加: ...原创 2019-06-30 20:49:41 · 260 阅读 · 0 评论 -
剑指OFFER----45、把数组排成最小的数(js实现)
题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路...原创 2019-07-10 20:24:28 · 485 阅读 · 0 评论 -
剑指OFFER----44、数字序列中某一位的数字(js实现)
题目数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。思路...原创 2019-07-10 20:24:08 · 292 阅读 · 0 评论 -
剑指OFFER----42、连续子数组的最大和(js实现)
题目HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和...原创 2019-07-10 20:21:45 · 315 阅读 · 0 评论 -
剑指OFFER----41、数据流中的中位数(js实现)
题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有值排序之后位于中间的数值。如果数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路...原创 2019-07-10 20:21:40 · 534 阅读 · 0 评论 -
剑指OFFER----40-1、最小的K个数(js实现)
题目输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路原创 2019-07-10 20:21:34 · 595 阅读 · 0 评论 -
剑指OFFER----29、顺时针打印矩阵(js实现)
题目题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。思路...原创 2019-07-10 20:21:29 · 571 阅读 · 0 评论 -
剑指OFFER----39、数组中出现次数超过一半的数字(js实现)
题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。思路...原创 2019-07-10 19:57:53 · 435 阅读 · 0 评论 -
剑指OFFER----38、字符串的排列(js实现)
题目输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba思路...原创 2019-07-10 19:57:59 · 375 阅读 · 0 评论 -
剑指OFFER----37、序列化二叉树(js实现)
题目请实现两个函数,分别用来序列化和反序列化二叉树思路原创 2019-07-10 19:58:04 · 333 阅读 · 0 评论 -
剑指OFFER----36、二叉搜索树与双向链表(js实现)
题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路原创 2019-07-10 19:58:18 · 338 阅读 · 0 评论 -
剑指OFFER----55-2、平衡二叉树(js实现)
题目思路原创 2019-07-09 21:21:59 · 378 阅读 · 0 评论 -
剑指OFFER----55-1、二叉树的深度(js实现)
题目思路原创 2019-07-09 21:21:17 · 211 阅读 · 0 评论 -
剑指OFFER----59-2、队列的最大值(js实现)
题目请定义一个队列并实现函数max得到队列里的最大值,要求函数max、push_back和pop_front的时间复杂度都是O(1)。思路原创 2019-07-09 21:17:36 · 374 阅读 · 0 评论 -
剑指OFFER----58-1、翻转单词顺序列(js实现)
题目牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路split API...原创 2019-06-14 00:57:49 · 419 阅读 · 0 评论