摘要: 题目链接:把数组排成最小的数 题意:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 题解:重载一下cmp函数。数字转成string。排序规律就是字符串组合起来,小的放前面 阅读全文
posted @ 2020-03-03 23:43 甜酒果。 阅读(115) 评论(0) 推荐(0)
摘要: 题目链接:整数中1出现的次数(从1到n整数中1出现的次数) 题意:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化 阅读全文
posted @ 2020-03-03 23:29 甜酒果。 阅读(232) 评论(0) 推荐(0)
摘要: 题目链接:最小的K个数 题意:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 题解:sort。输出。(我感觉我这个题应该是水过的,后面有时间补一下其他解法。 代码: 1 class Solution { 2 public: 阅读全文
posted @ 2020-03-03 22:48 甜酒果。 阅读(110) 评论(0) 推荐(0)
摘要: 题目链接:字符串的排列 题意:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 题解:递归。每次把首位字符变一下。固定这个字符,做它的全排列。后面的字符也是一样,固定,再全排 阅读全文
posted @ 2020-03-03 22:42 甜酒果。 阅读(175) 评论(0) 推荐(0)
摘要: 题目链接:二叉搜索树与双向链表 题意:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 题解:这题也是参考了别人的最优解回答。首先看一下题目这个要求。大概就是下面图这个意思。 一开始肯定会想到的是中序遍历。以中序遍历走完BST是可以得 阅读全文
posted @ 2020-03-03 22:35 甜酒果。 阅读(187) 评论(0) 推荐(0)
摘要: 题目链接:复杂链表的复制 题意:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。 题解:啊这个题我没看懂其实。我看了剑指的题解。大概就是要分三步 1、复制指针的label和next。将复制的节点跟在原节点后 阅读全文
posted @ 2020-03-03 22:02 甜酒果。 阅读(153) 评论(0) 推荐(0)
摘要: 题目链接:二叉树中和为某一值的路径 题意:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 题解:用一个一维数组记录路径。每次存储一下当前节点的值 阅读全文
posted @ 2020-03-03 21:25 甜酒果。 阅读(152) 评论(0) 推荐(0)
摘要: 题目链接:二叉搜索树的后序遍历序列 题意:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 题解:二叉搜索树是,左子树上的节点都都小于根结点,右子树上的节点大于根结点,它的子树也满足这个规则。 后序遍历是左右根遍历。因此我们只需要判断,当前节点如果是在右子树上,那么必然不会再出现比他 阅读全文
posted @ 2020-03-03 20:52 甜酒果。 阅读(119) 评论(0) 推荐(0)
摘要: 题目链接:从上往下打印二叉树 题意:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 题解:层序遍历啊。借助一个队列,从根结点开始,每次输出一个,就压入它的左右子节点。 代码: 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *lef 阅读全文
posted @ 2020-03-03 20:41 甜酒果。 阅读(124) 评论(0) 推荐(0)
摘要: 题目链接:栈的压入、弹出序列 题意:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序 阅读全文
posted @ 2020-03-03 20:35 甜酒果。 阅读(122) 评论(0) 推荐(0)
摘要: 题目链接:包含min函数的栈 题意:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 题解:使用两个栈,一个用来存放数据,一个用来存储min。我们在入栈的时候 阅读全文
posted @ 2020-03-03 18:22 甜酒果。 阅读(102) 评论(0) 推荐(0)
摘要: 题目链接:顺时针打印矩阵 题意:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 题解:画个图。模拟。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 发现规律,从左向右走 阅读全文
posted @ 2020-03-03 18:15 甜酒果。 阅读(123) 评论(0) 推荐(0)
摘要: 题目链接:树的子结构 题意:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 题解:先在A中找到B的根结点,找的过程递归实现。再判断在A中以这个根结点为节点的子树是不是和B一样。 代码: 1 /* 2 struct TreeNode { 3 int val; 阅读全文
posted @ 2020-03-03 17:35 甜酒果。 阅读(152) 评论(0) 推荐(0)
摘要: 题目链接:合并两个排序的链表 题意:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 题解:最开始做一下特殊处理,判空操作。然后判断当前两个链表节点哪个小,就把哪个先放入合并链表中,再做递归。 代码: 1 /* 2 struct ListNode { 3 阅读全文
posted @ 2020-03-03 00:08 甜酒果。 阅读(166) 评论(0) 推荐(0)