
剑指offer刷题笔记
storm岚
努力留住头发的程序员
展开
-
字符串的排列题解(剑指offer)
1. 题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。2. 解题思路这道题就是常规的排列组合问题,只是输入字符串中带有重复的字符,因此要特别注意这个细节。对于一般的排列组合问题,我都采用先固定某个位置的字符,再针对后面位置进行排序,一直到所有字符都排完,这个步骤是重复的,因此我原创 2020-07-26 15:42:15 · 260 阅读 · 0 评论 -
将数组排成最小的数
1. 题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。2. 题目分析将一个数组排成最小的数,我们就必须使组成的数字前面的数要小,那么我们就得对数组进行排序,不是按照大小,而是对其字符串进行排序,即将整数数组转为字符串数组,再对字符串数组进行排序,然后组成一个新的数。3. 题解3.1 Java题解import java.util.ArrayList;import原创 2020-07-26 11:45:31 · 476 阅读 · 0 评论 -
对称的二叉树题解(剑指offer)
1. 题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2. 解题思路该题就是判断一个二叉树是否是镜像二叉树,那么我们要根据镜像二叉树的特征来判断。判断根节点的左子树和右子树是否相等。判断根节点的左子树的左子树与根节点的右子树的右子树是否相等,以及左子树的右子树与根节点的右子树的左子树是否相等。通过不断的向树的子节点遍历,即重复步骤1和2,可以考虑用递归或者堆栈来解决改问题。3. 实现代码C++的实现代码:class原创 2020-07-21 22:33:22 · 276 阅读 · 0 评论