摘要: "把数组排成最小的数" 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 学习如何把数字转换字符串的函数了 此处cmp函数需要用static关键字, 不知道为什么 阅读全文
posted @ 2019-03-11 21:05 张飘扬 阅读(91) 评论(0) 推荐(0) 编辑
摘要: "圆圈中最后剩下的数" 题目描述 0, 1, ..., n 1这n个数字排成一个圆圈, 从数字0开始, 每次从这个圆圈里删除第m个数字. 求出这个圆圈里剩下的最后一个数字 第一次接触list容器, 迭代器也是第一次出现 主要是边界的判断 阅读全文
posted @ 2019-03-10 19:26 张飘扬 阅读(345) 评论(0) 推荐(0) 编辑
摘要: "按之字形顺序打印二叉树" 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 没有堆栈来回倒的过程 与从上到下打印树只相差一个翻转函数和奇偶判断 与上面方法相比, 多一步倒换堆栈的过程, 若不用 阅读全文
posted @ 2019-03-10 17:07 张飘扬 阅读(127) 评论(0) 推荐(0) 编辑
摘要: "二叉树的下一个结点" 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路: 若节点有右节点, 返回右节点的左子节点的左子节点直至叶子节点 若节点没有右节点, 则返回该结点的父节点支路的右节点 阅读全文
posted @ 2019-03-10 15:25 张飘扬 阅读(140) 评论(0) 推荐(0) 编辑
摘要: "把二叉树打印成多行" 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 和从上往下打印二叉树类似 "传送门" 两个栈来回倒 利用队列 阅读全文
posted @ 2019-03-10 13:26 张飘扬 阅读(163) 评论(0) 推荐(0) 编辑
摘要: "链表中环的入口结点" 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 第一步两个节点, 一快一慢, 若有环则相遇 当快慢节点相遇时, 慢结点走了x个节点, 快结点恰巧走了2x个节点, 2x = k n + x, k为1, 2,..., 此时令其中一个节点等于头 阅读全文
posted @ 2019-03-10 12:08 张飘扬 阅读(137) 评论(0) 推荐(0) 编辑
摘要: "对称的二叉树" 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 原来想利用中序左右对称来做, 后来发现不可行, 因为当树的元素对应值都相同时失效 class Solution { public: vector vt; voi 阅读全文
posted @ 2019-03-09 18:03 张飘扬 阅读(334) 评论(0) 推荐(0) 编辑
摘要: "构建乘积数组" 题目描述 给定一个数组A[0,1,...,n 1],请构建一个数组B[0,1,...,n 1],其中B中的元素B[i]=A[0] A[1] ... A[i 1] A[i+1] ... A[n 1]。不能使用除法。 大体思路是构造一个二维数组, 数组下标m=n时为1, 构造一个下, 阅读全文
posted @ 2019-03-09 17:04 张飘扬 阅读(160) 评论(0) 推荐(0) 编辑
摘要: "不用加减乘除做加法" 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、 、 、/四则运算符号。 思路: 当没有进位时, 两个数的二进制和为异或结果, 当有进位时, 对应两者二进制的位为都是1, 此时用与操作, 然后左移一位, 此时该数就是二进制的进位 class Solution 阅读全文
posted @ 2019-03-09 12:32 张飘扬 阅读(294) 评论(0) 推荐(0) 编辑
摘要: "数组中只出现一次的数字" 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 异或操作找数字, 学习了, 另外注意一下`num 1; } return counts; } bool isBit1(int num, unsigned int in 阅读全文
posted @ 2019-03-09 11:57 张飘扬 阅读(134) 评论(0) 推荐(0) 编辑
摘要: "平衡二叉树" 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 不是很懂, 一边递归一边判断, 可以消除节点遍历两次 递归判断布尔变量方法学学, 好像用到两次了, 节点遍历两次 阅读全文
posted @ 2019-03-09 10:49 张飘扬 阅读(97) 评论(0) 推荐(0) 编辑
摘要: "二叉树的深度" 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 利用队列的先进先出, 思想是弹出当前层, 插入下一层 树的遍历, 插一句It doesn't work why, it works why? 阅读全文
posted @ 2019-03-08 23:12 张飘扬 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "两个链表的第一个公共结点" 题目描述 输入两个链表,找出它们的第一个公共结点。 思想: 先比较两个链表的长度, 让得出差值, 让长的先走长出的节点数目, 然后两个链表一起走, 有相同节点时, 指向链表的游标会碰在一起, 此时游标就是返回值, 时间复杂度O(m+n)? 利用栈, 先把两个序列分别压入 阅读全文
posted @ 2019-03-08 21:39 张飘扬 阅读(100) 评论(0) 推荐(0) 编辑
摘要: "连续子数组的最大和" 题目描述 输入一个整型数组, 数组里有正数也有负数. 数组中的一个或连续多个整数组成一个子数组. 求所有子数组的和的最大值. 要求时间复杂度O为(N) 动态规划(不是很清楚), 大体思路是前面数字(包括当前数字)相加的和还没有当前数字大, 则以当前数字为起点, 重新组成子数组 阅读全文
posted @ 2019-03-08 14:04 张飘扬 阅读(81) 评论(0) 推荐(0) 编辑
摘要: "最小的K个数" 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 未完, 待续, 好像设计堆排序 先排序在遍历, 此处使用插曲排序 阅读全文
posted @ 2019-03-07 14:49 张飘扬 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0 版本一: map映射, 哈希法, 上午刚学到的现在 阅读全文
posted @ 2019-03-07 10:13 张飘扬 阅读(1508) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 递归版: 树的先中后序的处理就理解成按固定次序处理一个序列, 从大到小, 即中序, 通过指针传回上次递归的值(递归还能这么玩) 阅读全文
posted @ 2019-03-06 21:20 张飘扬 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 复杂链表的复制 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 版本一: 克隆每个节点, 并在被克隆的节点之口插入该克隆结 阅读全文
posted @ 2019-03-06 11:32 张飘扬 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 二叉树中和为某一值的路径 题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 注意, 是从跟节点一直到叶子节点的所有路径的val加起来, 阅读全文
posted @ 2019-03-05 15:44 张飘扬 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。( 阅读全文
posted @ 2019-03-04 15:29 张飘扬 阅读(576) 评论(0) 推荐(0) 编辑