
newcoder
zhangbaqing
github地址:https://github.com/GHzbq
展开
-
二维数组中的查找----newcoder
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。newcoder 题目链接题解:拿到这个题,第一种思路就是遍历一遍这是一个时间复杂度为 O(n2) 的办法代码如下:#include <iostream>#in...原创 2018-11-23 19:06:41 · 225 阅读 · 0 评论 -
变态跳台阶
一、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目来源:变态跳台阶二、题目解析class Solution {public: int jumpFloorII(int number) { if(number <= 0) { return 0;...原创 2019-06-06 13:28:35 · 173 阅读 · 0 评论 -
数值的整数次方
一、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目来源:数值的整数次方二、题目解析class Solution {public: double Power(double base, int exponent) { /** * 这道题的考点,我也不知道是什么 ...原创 2019-06-06 13:53:05 · 157 阅读 · 0 评论 -
调整数组使奇数位于偶数前面
一、题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题目来源:调整数组使奇数位于偶数前面二、题目解析class Solution {public: void reOrderArray(vector<int> &array) { ...原创 2019-06-06 13:56:02 · 189 阅读 · 0 评论 -
链表中倒数第K个节点
一、题目描述输入一个链表,输出该链表中倒数第k个结点。题目来源:链表中倒数第K个节点–nowcoder二、题目解析/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: Li...原创 2019-06-06 13:58:33 · 219 阅读 · 0 评论 -
反转链表
一、题目描述输入一个链表,反转链表后,输出新链表的表头。题目来源:反转链表–nowcoder二、题目解析/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNod...原创 2019-06-06 14:00:53 · 166 阅读 · 0 评论 -
合并两个排序的链表
文章目录一、题目描述二、题目解析一、题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题目来源:合并两个排序的链表二、题目解析/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/...原创 2019-06-07 12:50:56 · 384 阅读 · 0 评论 -
树的子结构
文章目录一、题目描述二、题目解析一、题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题目来源:树的子结构二、题目解析/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), ...原创 2019-06-07 13:00:59 · 147 阅读 · 0 评论 -
顺时针打印矩阵
文章目录一、题目描述二、题目解析一、题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:matrix=[12345678910111213141516]matrix=\left[ \begin{array}{ccc}1 & 2 & 3 & 4\\5 & 6 &...原创 2019-06-07 13:17:38 · 164 阅读 · 0 评论 -
二叉树中和为某一值的路径
文章目录一、题目信息二、题目解析一、题目信息输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)题目来源:二叉树中和为某一值的路径–nowcoder二、题目解析/*struct TreeNode { int val; struct...原创 2019-06-08 14:15:08 · 199 阅读 · 0 评论 -
二叉搜索树与双向链表
结合代码注释的讲解,来分析解决这个问题,或许是一种好办法文章目录一、题目信息二、题目解析一、题目信息题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。题目来源:二叉搜索树与双向链表–nowcoder二、题目解析/*struct TreeNode { int val; struct TreeNode ...原创 2019-06-09 11:22:03 · 168 阅读 · 0 评论 -
字符串的排列
结合代码注释的讲解,来分析解决这个问题,或许是一种好办法文章目录一、题目信息二、题目解析一、题目信息题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。题目来源:字...原创 2019-06-09 11:26:55 · 217 阅读 · 0 评论 -
数组中出现次数超过一半的数字
结合代码注释的讲解,来分析解决这个问题,或许是一种好办法文章目录一、题目信息二、题目解析一、题目信息题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目来源:数组中出现次数超过一半的数–nowcoder二、题目...原创 2019-06-09 11:30:10 · 367 阅读 · 0 评论 -
最小的K个数
结合代码注释的讲解,来分析解决这个问题,或许是一种好办法文章目录一、题目信息二、题目解析一、题目信息题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。题目来源:最小的K个数–nowcoder二、题目解析class Solution {public: vector<int> G...原创 2019-06-09 11:32:23 · 165 阅读 · 0 评论 -
连续子数组的最大和----动态规划专题
结合代码注释的讲解,来分析解决这个问题,或许是一种好办法文章目录一、题目信息二、题目解析一、题目信息题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7...原创 2019-06-09 11:34:29 · 442 阅读 · 0 评论 -
整数中1出现的次数
结合代码,来解决问题一、题目信息题目描述:求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。题目链接:数组中1出现的次数–牛客...原创 2019-06-10 22:04:53 · 182 阅读 · 0 评论 -
把数组排成最小的数
结合代码,来解决问题一、题目信息题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题目链接:把数组排成最小的数–牛客二、题目解析class Solution {public: string PrintMinNumber(vector&l...原创 2019-06-10 22:07:49 · 203 阅读 · 0 评论 -
丑数
结合代码,来解决问题一、题目信息题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题目链接:丑数–牛客二、题目解析class Solution {public: int GetUglyNumber_Solution(int inde...原创 2019-06-10 22:14:25 · 178 阅读 · 0 评论 -
矩形覆盖
一、题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目来源:矩形覆盖–nowcoder二、题目解析class Solution {public: int rectCover(int number) { if(number < 1) { ...原创 2019-06-06 13:26:16 · 164 阅读 · 0 评论 -
斐波那契数列
一、题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39题目来源:斐波那契数列–nowcoder二、题目解析class Solution {public: int Fibonacci(int n) { // 既然是求斐波那契数列,一般两种思路吧,递归和循环迭代 // 我...原创 2019-06-06 13:20:25 · 164 阅读 · 0 评论 -
替换空格----newcoder
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。newcoder 题目链接题解:拿到这个题,先分析题意,需要把所有的空格都替换为 “%20”,很明显这个"%20"是一个字符串,不是一个字符,要替换全部空格,字符串的长度肯定会增加,所以必定要统计出字符串中到底有多好个...原创 2018-11-23 19:21:36 · 223 阅读 · 0 评论 -
从尾到头打印链表 ---- newcoder
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。newcoder 网页链接以下为 2019.06.05 更新/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x...原创 2018-11-23 19:53:17 · 192 阅读 · 0 评论 -
重建二叉树 ---- newcoder
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。重建二叉树 newcoder 链接以下为 2019.6.5 更新/** * Definition for binary tree...原创 2018-11-23 20:18:35 · 213 阅读 · 0 评论 -
用两个栈实现一个队列 ---- newcoder
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。用两个栈实现一个队列 newcoder 题目链接以下为 2019.06.05 更新class Solution{public: void push(int node) { /** * 先考虑栈和队列的特性 * 栈:...原创 2018-11-23 20:29:26 · 199 阅读 · 0 评论 -
跳台阶 ----newcoder
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。newcoder 题目链接题解台阶不应该为负数,但这是题目,万一有个负数测试用例呢,所以我们避免一下如果台阶只有一级,那肯定只有一种方法如果台阶有两级,就有两种办法,一次跳一步,和一步跳两级如果有三级台阶,一次一步一步的跳可以,跳一步,再跳两步可以,跳两...原创 2018-11-23 20:57:57 · 202 阅读 · 0 评论 -
二进制占1的个数 ---- newcoder
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示newcoder 题目链接题解拿到这个题,我想到的第一种解法就是这个了,用位运算考虑到 1 & 1 == 1 1 & 0 == 0所以只需要把 1 左移 n 位然后进行按位与运算,就可以知道这个数的第 n 位是 0 还是 1了我们设置一个计数器,如果是 1 ,就让计数器加1就可以了我们还要...原创 2018-11-25 10:17:54 · 238 阅读 · 0 评论 -
二叉树的镜像 ---- newcoder
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述newcoder 题目链接题解方法一:递归所谓镜像就是把左右子树交换嘛拿到一棵树的根节点,如果非空,就交换左右孩子节点然后递归交换左子树,再递归交换右子树下面附上代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode...原创 2018-11-27 20:45:06 · 283 阅读 · 0 评论 -
包含 min函数的栈 ---- newcoder
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。newcoder 题目链接题解栈大家都熟悉了,push 和 pop 操作都不难,但是要实现一个 min 函数,还要求时间复杂度0(1)根据栈的特性,只能弹出栈顶元素,所以用来实现这个 min 函数的数据结构需要多加思量,0(1)的时间复杂度,我最先想到的哈希表,但是如果用哈...原创 2018-11-27 21:03:30 · 182 阅读 · 0 评论 -
栈的压入、弹出序列 ---- newcoder
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)newcoder 题目链接题解什么意思呢?简单的说就是给你序列,让你通过一...原创 2018-11-27 21:11:09 · 210 阅读 · 0 评论 -
从上往下打印二叉树 ---- newcoder
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。newcoder 题目链接题解我们换个名字,叫做二叉树的层序遍历这个名字熟悉吧在树这个模块,用的最多的就是递归了吧,但这个层序遍历递归解决不了,需要借助队列来解决。考虑队列的特性先进先出,如果树不是空树,先将根节点入队列如果队列不空,进入循环取队头元素,访问 val ,如果这个节点的左子树不为空,这个节点的左孩...原创 2018-11-27 21:21:44 · 184 阅读 · 0 评论 -
二叉搜索树的后序遍历序列 ---- newcoder
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。newcoder 题目链接题解首先我们先回忆一下二叉搜索树,对二叉搜索树的根节点,根节点的左子树上所有元素的值都比根节点的值小,根节点右子树上所有元素的值都比根节点元素的值大在回忆一下后序遍历后序遍历序列的最后一个元素一定是根节点,再...原创 2018-11-27 21:33:42 · 230 阅读 · 0 评论 -
复杂链表的复制----nowcoder
题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)题目来源: nowcoder题目链接:复杂链表的复制题目分析:/*struct RandomListNode { int label; stru...原创 2019-01-10 15:11:15 · 230 阅读 · 0 评论 -
环形链表专题
最近在刷LeetCode的题,对环形链表方面的题做个总结文章目录一、判断链表是否带环1. 题目详情2. 题目解析解法一:快慢指针解法二:哈希表/map解法三: 非常规做法二、带环链表入口1. 题目详情2. 题目解析解法一:快慢指针解法二:非常规做法一、判断链表是否带环1. 题目详情环形链表-力扣(LeetCode)2. 题目解析解法一:快慢指针我们定义两个指针,初始位置都放在头节点...原创 2019-04-12 10:42:07 · 4961 阅读 · 2 评论 -
最长回文串----动态规划专题
文章目录一、题目信息1. 题目描述2. 示例13. 示例24. 题目来源二、题目解析1. 动态规划1.1 思路1.2 状态转移方程1.3 复杂度分析1.4 代码实现2. 中心扩展算法2.1 思路2.2 注意事项2.3 复杂度分析2.4 代码实现3. Manacher算法一、题目信息1. 题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。2....原创 2019-05-07 13:09:19 · 565 阅读 · 0 评论 -
正则表达式匹配----动态规划专题
文章目录一、题目信息1. 题目描述2. 说明3. 示例14. 示例25. 示例36. 示例47. 示例58. 题目来源二、题目解析1. 分析题意2. 动态规划2.1 思路2.2 状态转移方程2.3 复杂度分析2.4 代码实现3. 递归3.1 思路3.2 复杂度分析3.3 代码实现一、题目信息1. 题目描述给定一个字符串 (s) 和一个字符模式 ( p)。实现支持 . 和 * 的正则表达式匹...原创 2019-05-07 14:46:12 · 1632 阅读 · 2 评论 -
旋转数组的最小数字
文章目录一、题目描述二、题目解析一、题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目来源:旋转数组的最小数字–nowcoder二、题目解析clas...原创 2019-06-06 12:17:25 · 193 阅读 · 0 评论 -
第一个只出现一次的字符
结合代码,来解决问题一、题目信息题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)题目链接:第一个只出现一次的字符–牛客二、题目解析class Solution {public: int FirstNotRepeatingChar(string str...原创 2019-06-10 22:27:13 · 170 阅读 · 0 评论