摘要:
从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 两种方法, 一栈, 一种队列 栈: 利用两个栈, 第global保存每一层父节点, local保存每一层的子节点, 先左后右的顺序压栈, 当global栈空时, 把local栈中元素压入global中并清空loca 阅读全文
摘要:
包含min函数的栈 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路, 若使用标记用来标记最小元素的位置, 若弹出的是最小元素, 还需要次最小元素的标记位, 若再弹出的是次最小元素, 又需要次次最小元素, 依次类推, 则不能确定需 阅读全文
摘要:
二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 先序遍历的变形 阅读全文
摘要:
二叉树的镜像 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 记录一下, 刷题目前最苦逼的一次, 调试N次没通过, 最后一步一步粘的答案排错 阅读全文
摘要:
合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 归并排序的变形 递归版 非递归: 注意头结点保存方法, 先new一个节点做头结点, 归并后再delete 阅读全文
摘要:
反转链表 题目描述 输入一个链表,反转链表后,输出新链表的表头。 才发现牛客网链表没表头, 哭死, 递归太漂亮了(来自牛客), 忍不住提到版本一(按照先后顺序应该是版本二), 版一: 首先递归到最后一个元素并返回, 返回方式目前见到有点新意 以后每次都返回这个指针(递归没有用到它, 却还能返回) , 阅读全文
摘要:
链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。 思想(没想出来 ): 一次遍历同时找出倒数第k个, 利用两个指针变量, 其中一个先走k 1步后, 第二个指针变量开始游走, 直至第一个指针走完整个数组, 此时第二个指针变量指向倒数第k个元素 版本一来自牛客网, 版本二参考书 阅读全文
摘要:
调整数组顺序使奇数位于偶数前面 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 版本一: 利用插入排序, 所不同的是多一个if条件判断 版本二: 条件判断拓展, 剑指o 阅读全文
摘要:
数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 主要是考虑各种情况, 题外话, 今天心态微崩, 看个电影调节一下, 目前此题一个版本, 考虑不全 class Solution { public: double 阅读全文
摘要:
二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 C++中位运算符: 与 , 或 , 异或 , 左移 其中左移操作最右边补0, 右移操作最左边补与符号为相同的0或1 0101 2 = 1111 0101 2 = 0001 版本一: 由于正负关系, 不能右移 阅读全文
摘要:
变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 卧槽, 这题还有先后顺序, 有排序, 刚开始以为没排序 C++没有幂运算符, 代表幂运算!!! 题外话, 一次能跳上n个台阶是挺BT的 版本二: 自己构建幂函数 阅读全文
摘要:
跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 斐波那契数列的变形, 非递归版与递归版都多了 的判断 版本一: 非递归版 阅读全文
摘要:
斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n 阅读全文
摘要:
旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返 阅读全文
摘要:
用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 stack1用来push, stack2用来pop 版本一: 每次pop操作都需要从stack1复制到stack2中, 并清空stack1, 其实在stack2不为空时, 执行pop操作 阅读全文
摘要:
重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 没做出来, 抄牛客讨论里的答案, 解题关 阅读全文
摘要:
从尾到头打印链表 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 版本一: 没什么技术含量, 利用vector数组简单交换头尾数子 版本三: 利用递归, 源自牛客网 版本四: 自己在vs上写的, 不知道为何提交到牛客上不能通过 include include includ 阅读全文
摘要:
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 预先计算出替换后的字符串的长度, 然后从后向前复制 版本一: 没做出来, 参考书上解题思路 阅读全文
摘要:
二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 学会了使用vector表示二维数组 版本一: 暴力遍历法 class Solu 阅读全文
摘要:
9.Palindrome Number Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: In 阅读全文