12 2022 档案
摘要:JZ75 字符流中第一个不重复的字符 题目 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 "go" 时,第一个只出现一次的字符是 "g"。 当从该字符流中读出前六个字符 “google" 时,第一个只出现一次的字符是"l"。 方法1 使用LinkedHas
阅读全文
摘要:JZ74 和为S的连续正数序列 题目 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。 但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。 没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。
阅读全文
摘要:JZ70 矩形覆盖 题目 我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,从同一个方向看总共有多少种不同的方法? 数据范围:0≤n≤38 进阶:空间复杂度 O(1) ,时间复杂度 O(n) 注意:约定 n == 0 时,输
阅读全文
摘要:JZ67 把字符串转换成整数(atoi) 题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成: 1.若干空格 2.(可选)一个符号字符('+' 或 '-') 3. 数字,字母,符号,空格组成的字符串表达式 4.
阅读全文
摘要:JZ14 剪绳子 描述 给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1],...,k[m] 。请问 k[1]*k[2]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8
阅读全文
摘要:JZ64 求1+2+3+...+n 题目 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 方法 位运算 思路 算法实现 从1连加到n,不能使用城乘除法,那就只能相加了。一个一个加,但是循环需要判断什么时候
阅读全文
摘要:JZ62 孩子们的游戏(圆圈中最后剩下的数) 题目 每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。 其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。 然后,随机指定一个数m,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出
阅读全文
摘要:JZ58 左旋转字符串 题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。 对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。 例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “X
阅读全文
摘要:JZ57 和为S的两个数字 题目 输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。 方法1 暴力解题 思路 算法实现 两次循环,两个值相加与sum进行比较,为true直接br
阅读全文
摘要:JZ56 数组中只出现一次的两个数字 题目 一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字 思路 算法实现 既然有两个数字只出现了一次,我们就统计每个数字的出现次数,利用哈希表的快速根据key值访问其频率值。 具体做法: step 1:遍历数组,用哈
阅读全文
摘要:JZ54二叉搜索树的第k个节点 题目 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。 返回第k小的节点值即可 不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 保证n个节点的值不一样 思路 算法实现 根据二叉搜索树的性质,左子树的元素都小于根节
阅读全文
摘要:JZ51 数组中的逆序对 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 方法1:暴力 思路 算法实现 两个for循环,如果前面的
阅读全文
摘要:JZ49 丑数 题目 我们先看到题目,把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。 方法1:质因数分解(暴力) 思路 算法实现 一个很朴素的做法 从1~n每次+1,一直枚举,直到找到地N个丑数为
阅读全文
摘要:JZ48 最长不含重复字符的子字符串 描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例1 输入:"abcabcbb" 返回值:3 说明:因为无重复字符的最长子串是"abc",所以其长度为 3。 方法1 思路 维护一个数组,想里面添加元素,直至出现第一个重复元
阅读全文
摘要:JZ47 礼物的最大价值 描述 描述 在一个m\times nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 如
阅读全文
摘要:JZ46 把数字翻译成字符串 描述 有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。 现在给一串数字,返回有多少种可能的译码结果 示例1 输入: "12" 返回值:2 说明: 2种可能的译码结果(”ab” 或”l”) 思路 思路: 对于普通数组1-9,译码方
阅读全文
摘要:JZ45 把数组排成最小的数 描述 输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。 1.输出结果可能非常大,所以你需要返回一个字符串而不是整数 2.拼接
阅读全文
摘要:JZ43 整数中1出现的次数(从1到n整数中1出现的次数) 描述 输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数 例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次 思路:暴力统计法 遍历1到n的每个数字,然后对每个数
阅读全文
摘要:JZ40 最小的K个数 描述 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。 思路: 具体做法: step 1:优先判断k为0或者输入数组长度为0的特殊情况。 st
阅读全文
摘要:JZ38 字符串的排列 描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 题目主要信息 给定一个长度为n的字符串,求其中所有字符
阅读全文
摘要:JZ36 二叉搜索树与双向链表 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表 注意: 1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继 2.返回链表中的第一个节点的指针 3.函数返回的TreeNo
阅读全文
摘要:JZ34 二叉树中和为某一值的路径(二) 描述 输入一颗二叉树的根节点root和一个整数expectNumber,找出二叉树中结点值的和为expectNumber的所有路径。 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点 2.叶子节点是指没有子节点的节点 3.路径只能从父节点到子
阅读全文
摘要:JZ33 二叉搜索树的后序遍历序列 描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 提示: 1.二叉搜索树是指父亲节点大于左子树中的全部节点,但是小于右子树中的全部节点的树。 2.该题我
阅读全文
摘要:JZ31 栈的压入、弹出序列 描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序
阅读全文
摘要:JZ26 树的子结构 描述 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构) 假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构 题解1 深度遍历 思路 既然是要找到A树中是否有B树这样子树,如
阅读全文
摘要:JZ23 链表中环的入口结点 描述 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 解析 环很大 在前面我们提到过快慢指针,判断是否有环。如果有环,在来找环的入口。如果没环直接返回null即可,我们假设是有环的,那么会有两种情况,一种是O型,一种是6型,其实原理都
阅读全文
摘要:JZ21 调整数组顺序使奇数位于偶数前面(一) 描述 输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 既然要把所有的奇数放在数组前面,所有的偶数放在数组后面,
阅读全文