自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 整数1出现的次数

题目:求出1-13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 思路2:分别求固定位出现1 的次数,比如对于数4321,固定十位为1的数字有:10,11,12,13,,,4319,相当于将4321进行分割为a=4321/10=432,b=4321%10=

2020-08-04 22:47:29 132

原创 数组中出现次数超过一半的数

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路1:利用hash的方法,遍历数组的过程中记录数字出现的次数,如果大于一半,则返回这个数即可,很简单,但是空间复杂度O(n),时间复杂度O(n),空间有点浪费, 思路2:既然出现次数超过一半,那么其他数字的次数小于一半,故可遍历的过程中记录锁定数出现的次数,若后一个数与当前数相同,则计数加一

2020-08-04 18:27:20 140

原创 字符串的排列

题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路:利用递归的思想分析可知:设fun(abc)为字符串abc的所有排列情况,则fun(abc)=a fun(bc)+ b fun(ac)+ c fun(ca),可以看作第一个字符依次与后面的字符进行交换位置,然后将第一个字符固定,求后面剩余字符的全排列,交换位置可以使用一个for循环来实现。递推下去可知,fun(bc)

2020-08-04 18:12:48 119

原创 把数组排成最小的数

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路:可以看出,若要实现组合后的树=数最小,需要事先对给定的数组进行排序,排序算法需要指定比较器,并要转换成string class Solution { public: static bool cmp(int a,int b){ string A=""; string B="";

2020-08-03 19:53:27 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除