33.把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

代码:

```
#include<iostream>
#include<algorithm>
using namespace std;//链接:https://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993
//来源:牛客网/*对vector容器内的数据进行排序,按照 将a和b转为string后若 a+b<b+a  a排在在前 的规则排序,如 2 21 因为 212 < 221 所以 排序后为 21 2 to_string() 可以将int 转化为string
*/class Solution
{public:static bool cmp(int a,int b){string A="";string B="";A+=to_string(a);A+=to_string(b);B+=to_string(b);B+=to_string(a);return A<B;}string PrintMinNumber(vector<int> numbers){string answer="";sort(numbers.begin(),numbers.end(), cmp);for(int i=0;i<numbers.size();i++){answer+=to_string(numbers[i]);}return answer;}
};int main()
{//    int Min=NumberOf1Between1AndN_Solution(12);
//    cout<<Min<<endl;vector<int> vec={3,32,321};Solution t;string ans=t.PrintMinNumber(vec);cout<<ans<<endl;return 0;
}

32.面试题32:整数中1出现的次数(从1到n整数中1出现的次

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

解法1:
链接:https://blog.csdn.net/yi_afly/article/details/52012593
https://blog.csdn.net/crazy__chen/article/details/48597577

对于某个位置,它可以是大于1,等于1,等于0:

若cur为0,则1出现次数为round*base
若cur为1,则1出现次数为round*base+former+1
若cur大于1,则1出现次数为rount*base+base

比如:

534 = (个位1出现次数)+(十位1出现次数)+(百位1出现次数)=(53*1+1)+(5*10+10)+(0*100+100)= 214
530 = (53*1)+(5*10+10)+(0*100+100) = 213
504 = (50*1+1)+(5*10)+(0*100+100) = 201
514 = (51*1+1)+(5*10+4+1)+(0*100+100) = 207
10 = (1*1)+(0*10+0+1) = 2

代码:


public class Solution {public int NumberOf1Between1AndN_Solution(int n) {int i = 1;int before=0;//由i位前决定的1数目(高位)int current = 0;//由i位决定的1数目int after=0;//由i位后决定的1数目(低位)int count = 0;while((n/i)>0){current = (n/i)%10;before = n/i/10;after = n - (n / i) * i;if(current>1){count = count + (before + 1) * i;}else if (current == 0){count = count + before * i;}else if (current == 1){count = count + before * i + after + 1;}i = i * 10;}return count;}
}

解法二:常规解法:

代码:

int NumberOf1Between1AndN_Solution(int n)
{int count = 0;for(int i=0; i<=n; i++){int temp = i;//如果temp的任意位为1则count++while(temp){if(temp%10 == 1){count++;}temp /= 10;}}return count;
}

《剑指offer》面试题33、32——把数组排成最小的数、整数中1出现的次数相关推荐

  1. 剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted()

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 输出结果可能非常大,所以需要返回一个字符串而不是整数. 拼接起来的数字可能会有前导 0,最后结果 ...

  2. 剑指offer——面试题33:把数组排成最小数

    剑指offer–面试题33:把数组排成最小数 Solution1: 20180904复习.重点记忆比较技巧!!! 代码参考网址:https://www.nowcoder.com/profile/416 ...

  3. 剑指offer——面试题8:旋转数组的最小数字

    剑指offer--面试题8:旋转数组的最小数字 Solution1: 自己想的复杂度为O(n)O(n)O(n)的算法,若用二分查找则: 1.代码复杂:2.最坏情况下的二分查找的时间复杂度亦为O(n)O ...

  4. 牛客网在线编程专题《剑指offer-面试题33》把数组排成最小的数

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习.深度学习.计算机视觉.智能对话系统相关内容, ...

  5. [剑指offer]面试题8:旋转数组的最小数字

    面试题8:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2 ...

  6. 《剑指offer》第四十三题(从1到n整数中1出现的次数)

    // 面试题43:从1到n整数中1出现的次数 // 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如 // 输入12,从1到12这些整数中包含1 的数字有1,10,11和12 ...

  7. 33:把数组排成最小的数

    /*** 面试题33:把数组排成最小的数* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这三个数字能排成的 ...

  8. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  9. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面

    剑指offer--面试题14:调整数组顺序使奇数位于偶数前面 Solution1: 顺序交换,比较好的算法!!! class Solution { public:void reOrderArray(v ...

  10. 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

最新文章

  1. matlab的讲稿ppt,Matlab初步(讲稿200508)之四
  2. oracle 事务测试
  3. 在Java 8之前的项目中使用JUnit 5
  4. Apple Watch新功能曝光:“一键收取”蚂蚁森林能量
  5. 图片底下配的文字叫什么_PPT排版狂想篇 | 如何用一张图片搞定30种排版
  6. aspose.pdf-17.8暴力破解,附破解过程和使用代码。仅供参考,不可用于商业用途
  7. 高通 mdm9607编译以及audio框架
  8. Centos7虚拟机MySQ连接Hive
  9. python 二维转一维_Numpy 将二维图像矩阵转换为一维向量的方法
  10. Java猫和狗(继承,多态,抽象,接口版)上
  11. CSS中的十二种结构伪类选择器
  12. android协议分析,对一个apk的协议分析
  13. jvm内存模型与垃圾回收
  14. 安徽工程大学计算机与信息学院教师,杨丹 - 安徽工程大学 - 计算机与信息学院...
  15. php 选择地区 查找,地区编码查询_php根据ip查询所在地区的代码
  16. 从零开始,手把手教你python爬取美足船袜网!
  17. 字体问题-如何判断GB2312
  18. 自己造一个简易的IOC轮子
  19. 公司停电,程序员去网吧写代码;iPhone 14将于北京时间9月8日发布;GitLab修复一个关键远程代码执行漏洞|极客头条
  20. 企微魔盒独立版v15.1

热门文章

  1. 论文发表在什么期刊上_设计论文发表【期刊论文】设计论文发表
  2. git 从远程仓库指定分支clone代码到本地
  3. ubuntu自定义安装里怎么选_安装地暖时,地板要怎么选?
  4. 高级python_高级Python功能
  5. JavaScript实用代码片段
  6. SQL:PostgreSQL+PostGIS的安装以及C# GDAL开发环境配置
  7. 使用Cmder替换cmd,让你的开发飞起来
  8. NullPointerException空指针异常的理解
  9. SLAM_相机与imu的融合基础知识
  10. Facebook最新研究:全局一致的视频深度估计