摘要: 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解法1:基于Partition函数的时间复杂度为O(n)的算法。注意最后检查数 阅读全文
posted @ 2017-12-26 16:35 jeysin 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 思路:以前序遍历为基础,考虑NULL指针。将NULL指针记为$。注意字符串的处理,将数字转化为字符串,将字符串转化为数字。 1 class Solution { 2 public: 3 void WriteToStr(int val, cha 阅读全文
posted @ 2017-12-26 15:42 jeysin 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路:回溯法,排列树。由于字符有 阅读全文
posted @ 2017-12-26 11:37 jeysin 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向 思路:基于中序遍历方法,用一个指针始终指向双向链表的最后一个节点,转换完以后即指向双向链表的最后一个节点 1 class Solution { 2 public: 3 void 阅读全文
posted @ 2017-12-26 09:29 jeysin 阅读(123) 评论(0) 推荐(0) 编辑