
剑指offer
素年恋锦事
嵌入式,Java
展开
-
剑指43—1~n中1出现的个数
剑指43—1~n中1出现的个数题目 题目 对给定的n,统计1~n中每一位上1出现的次数,最后输出总和。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。原创 2020-10-28 11:57:19 · 337 阅读 · 0 评论 -
剑指38—字符串的排列
剑指38—字符串的排列 题目思路 题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串 abc,则打印出由字符 a, b, c 所能排列出来的所有字符串 abc, acb, bac, bca, cab 和 cba。 示例: 输入: abc 输出: abc acb bac bca cab cba 思路 有要求排序,则需要将字符串所有字符取出来进行排序,再根据排序后的结果选择字符进行组合; ...原创 2020-09-16 22:06:27 · 140 阅读 · 0 评论 -
剑指50—字符串中第一次只出现一次的字符
剑指50—字符串中第一次只出现一次的字符 题目思路代码 题目 给定一个字符串,找出其中只出现过一次的字符位置,如果有多个字符满足条件则输出第一个字符的位置,如果没有满足条件的字符则输出-1。 示例: 输入: “abaccdeff” 输出: 1 思路 维护一个大小为256的数组(常用字符范围为/u0000-/u007f),遍历时对应的数组元素+1。 第二次遍历时只需要找出数组中值为1的字符,返回其在字符串中的下标即可。 代码 public class Solution { public int i原创 2020-09-15 10:48:30 · 87 阅读 · 0 评论 -
剑指51—数组中的逆序对
剑指51—数组中的逆序对 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。 示例: 输入: 1,2,3,4,5,6,7,0 输出: 7 思路 逆序对的存在表明数字没有按照顺序排列,因此进行排序的时候将交换次数累计下来即可得到逆序对的数量。但这要求排序算法是稳定,即不会造成多余的交换。 三种简单算法:冒泡、简单选择、直接插入都是稳定的排序算法,但它原创 2020-09-15 00:13:26 · 79 阅读 · 0 评论