题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,一共出现了5次。 思路: 1、累加法 累加1到n中每个整数1出现的次数。 求每…
分类:递归
(剑指Offer)面试题43:n个骰子的点数
题目: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 思路: s可能出现的值的范围为:n–6*n 1、全排列 回溯法枚举n个骰子(6面)的全排列,然后计算每一…
(算法)最长单词
题目: 给定一组单词,找出其中的最长单词,且该单词由这组单词中的其他单词组成。 思路: 首选将单词按照字符串大小从大到小排序,然后依次判断该单词是否由其他单词组成。 将单词保存在散列表中,这样容易查找。 判断单词组成:依…
(算法)成都麻将
题目: 说起麻将,那可是川渝市民的最爱,无论亲朋好友聚会,还是业务谈判,总是少不了麻将的声音。成都麻将只能包括3种类型:条,筒,万。没有“门、东南西北、红中”。每种牌都是数字从1到9,每个数字有4张,共36张。筒,万,条…
(剑指Offer)面试题28:字符串的排列
题目: 输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路: 把一个字符串看成两部分…
(剑指Offer)面试题59:对称的二叉树
题目: 请实现一个函数,用来判断一颗二叉树是不是对称的。 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 对于一棵二叉树,从根结点开始遍历, 如果左右子结点有一个为NULL,那么肯定不是对称二叉树…
(算法)二叉树中两个结点的最近公共父结点
题目: 二叉树中两个结点的最近公共父结点 二叉树结点的定义如下: struct TreeNode{ int val; TreeNode *left; TreeNode *right; }; 思路: 前面在剑指…