找到通过插入给定数字形成的最小数字

找到通过插入给定数字形成的最小数字

在给定的数字插入一个数字意味着在给定的数字中添加一个新的数字,可以是在数字的前面、后面或者中间。我们已经给出了一个数字和一个数字,并且必须以尽可能小的方式将该数字添加到数字中。为了方便插入操作,我们将把数字转换为字符串。此外,给定的数字也可以是负数,因此我们必须考虑这种情况。

示例示例

Input1

的中文翻译为:

输入1

Given number: 124Given digit: 3Output: 1234 

Explanation − 我们有四个地方可以添加给定的数字,结果可以是3124、1324、1234、1243。在这四个中,倒数第二个是最小的。

Input2

的中文翻译为:

输入2

Given number: -124Given digit: 3Output: -3124 

Explanation − 我们有四个地方可以添加给定的数字,结果可以是-3124,-1324,-1234,-1243。在这四个中,第一个是最小的。

Naive Approach

的中文翻译为:

天真的方法

我们现在已经看过了示例,接下来让我们看一下我们将执行的解决问题的步骤 –

首先,我们将检查当前数字是正数还是负数。

如果当前数字为负数,我们将将其标记为负数变量,并将当前数字设为正数。

之后,我们将把当前的数字转换为字符串,并根据当前数字的正负调用函数basis。

在这些函数中,我们将尝试在每个位置上适配数字,并根据正数或负数来检查当前数字是较小还是较大。

如果当前数字是正数,我们将尝试找到最小的数字并返回。

否则,我们将找到最大的数字,并通过乘以-1来返回它。

Example

的中文翻译为:

示例

#include using namespace std;int findMin(string str, int d){   string ans = str + to_string(d); // variable to store the answer        // traversing over the string    for(int i=0; i<= str.size(); i++){      ans = min(ans, str.substr(0,i) + to_string(d) + str.substr(i));   }   return stoi(ans);}int findMax(string str, int d){   string ans = str + to_string(d); // variable to store the answer        // traversing over the string    for(int i=0; i<= str.size(); i++){      ans = max(ans, str.substr(0,i) + to_string(d) + str.substr(i));   }   return stoi(ans);}int minimumNumber(int n, int d){   // checking for the negative number    int isNeg = 1;       if(n < 0){      n *= -1;      isNeg = -1;   }       // converting the current number to string    string str = to_string(n);       if(isNeg == 1){      return findMin(str,d);   }   else{      return -1*findMax(str,d);   }}int main(){   int n = -124; // given number    int d = 3; // given digit        // calling to the function    n = minimumNumber(n, d);       cout<<"The minimum number after adding the new digit is "<<n<<endl;   return 0;}

输出

The minimum number after adding the new digit is -3124

时间和空间复杂度

上述代码的时间复杂度为O(N*N),其中N是给定数字的位数。

上述代码的空间复杂度为O(N),其中N是给定数字的位数。

高效的方法

在之前的方法中,我们一直在检查每个数字,找到比给定数字大的第一个数字,然后将其添加并返回自身,这是一种高效的方法。对于负数,找到比它小的数字,并将其添加并返回。

让我们看看代码−

Example

的中文翻译为:

示例

#include using namespace std;int findMin(string str, int d){   // traversing over the string    for(int i=0; i d){         return stoi(str.substr(0,i) + to_string(d) + str.substr(i));      }   }   return stoi(str + to_string(d));}int findMax(string str, int d){   // traversing over the string    for(int i=0; i<= str.size(); i++){      if(str[i]-'0' < d){         return stoi(str.substr(0,i) + to_string(d) + str.substr(i));      }   }   return stoi(str + to_string(d));}int minimumNumber(int n, int d){   // checking for the negative number    int isNeg = 1;   if(n < 0){      n *= -1;      isNeg = -1;   }      // converting the current number to string    string str = to_string(n);       if(isNeg == 1){      return findMin(str,d);   }   else{      return -1*findMax(str,d);   }}int main(){   int n = 124; // given number    int d = 3; // given digit        // calling to the function    n = minimumNumber(n, d);       cout<<"The minimum number after adding the new digit is "<<n<<endl;   return 0;}

输出

The minimum number after adding the new digit is 1234

时间和空间复杂度

上述代码的时间复杂度为O(N),其中N是给定数字的位数。

上述代码的空间复杂度为O(N),其中N是给定数字的位数。

结论

在本教程中,我们实现了一种在给定数字中插入数字的方法,即在给定数字的前面、后面或数字之间添加一个新的给定数字。我们看到了两种方法,一种时间复杂度为O(N*N),另一种为O(N)。这两种方法的空间复杂度都是O(N)。

以上就是找到通过插入给定数字形成的最小数字的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:47:49
下一篇 2025年12月17日 21:47:56

相关推荐

  • 利用CSS实现纯英文数字自动换行

    下面为大家带来一篇css代码使纯英文数字自动换行的简单实现。内容挺不错的,现在就分享给大家,也给大家做个参考。 当一个定义了宽度的块状元素中填充的全部为纯英文或者纯数字的时候,在IE和FF中都会撑大容器,不会自动换行 并且当数字或者英文中带有汉字时,会从汉字处换行,而纯汉字却可以自动换行。这个问题如…

    好文分享 2025年12月24日
    000
  • CSS教程(四)如何在网页中插入CSS

    前两章我们了解了css的语法,但要想在浏览器中显示出效果,就要让浏览器识别并调用。当浏览器读取样式表时,要依照文本格式来读,这里介绍四种在页面中插入样式表的方法:链入外部样式表、内部样式表、导入外表样式表和内嵌样式。   链入外部样式表 链入外部样式表是把样式表保存为一个样式表文件,然后在页面中?l…

    2025年12月23日
    000
  • html5怎么设置input只能输入数字

    在html5中,可以通过input标签的type属性来实现只能输入数字的功能,只需要将type属性的值设置为“number”即可,语法“”。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 标签规定用户可输入数据的输入字段。 根据不同的 type 属性,输入字段有多种形态。…

    2025年12月21日
    000
  • Dreamweaver网页中怎么插入导航条? dw网页导航条的使用方法_Dreamweaver教程_网页制作

    dreamweaver网页中怎么插入导航条?dreamweaver中网页为了更有层次感,想要插入导航条,该怎么使用导航条呢?下面我们就来看看dw网页导航条的使用方法,需要的朋友可以参考下 Dreamweaver中导航条可以让网页更有层次感,该怎么使用导航条呢?下面我们就来看看详细的教程。 软件名称:…

    2025年12月21日 好文分享
    000
  • 总结HTML网页中插入视频的方法

    现在如果要在页面中使用video标签,需要考虑三种情况,支持ogg theora或者vp8(如果这玩意儿没出事的话)的(opera、mozilla、chrome),支持h.264的(safari、ie 9、chrome),都不支持的(ie6、7、8)。好吧,现在让我们从技术层面来认识html 5的视…

    好文分享 2025年12月21日
    000
  • HTML怎么实现数字焦点图轮播代码

    html怎么实现数字焦点图轮播代码?数字焦点图轮播怎么做?数字焦点图轮播需要注意什么?给大家一份实现数字焦点图轮播代码,需要的朋友可以借鉴一下。 数字焦点图轮播代码 @@##@@ @@##@@ @@##@@ 1 2 3 数字焦点图轮播代码就是这么多了,更多精彩请关注创想鸟其它相关文章! 相关阅读: …

    好文分享 2025年12月21日
    000
  • 总结如何在HTML网页中插入视频方法

    这篇文章主要介绍了html网页中插入视频的方法小结,需要的朋友可以参考下 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera、Mozilla、Chrome),支持H.264的(Safari、IE 9、Chrome),都不…

    好文分享 2025年12月21日
    000
  • 大于p的最小三角数

    我们将讨论三角形数以及如何找到仅大于给定数字“num”的最小三角形数。我们先讨论什么是三角数,然后找出比“num”大的最小三角数 我们将看到针对同一问题的两种不同方法。在第一种方法中,我们将运行一个简单的循环来生成输出,而在第二种方法中,我们将首先生成一个用于计算所需数字的通用公式,然后直接应用该公…

    2025年12月17日
    000
  • C/C++中的数字连线游戏?

    游戏 – 假设有一个 n × n 的方格数组。其中,一些方格是空的,一些是实心的,还有一些非实心的方格由整数 1、2、3、… 设置。每个整数在棋盘上保持或占据恰好两个不同的方格。玩家的任务是借助仅实现水平和垂直移动的简单路径来连接棋盘上每个整数的两次出现。不允许两条不同的路径…

    2025年12月17日
    000
  • 一个数字连线游戏?

    数字连接是一种逻辑谜题,涉及在网格中找到连接数字的路径。 Numberlink谜题的一个简单例子 Numberlink谜题的解答 规则 – 玩家必须用单一连续线(或路径)将网格上的所有匹配数字配对。线条不能分叉或交叉,并且数字必须位于每条线的末端(即不在中间)。只有当问题具有唯一解并且网…

    2025年12月17日
    000
  • C++程序用于计算使数字n变为1所需的最小操作次数

    假设我们有一个数字n。我们任意执行这些操作之一 – 当 n 可被 2 整除时,将 n 替换为 n/2 当 n 可被 3 整除时,将 n 替换为 2n/3 当 n 可被 5 整除时,将 n 替换为 4n/5 立即学习“C++免费学习笔记(深入)”; li> 我们必须计算出数字 1 所…

    2025年12月17日
    100
  • 使用堆栈在C++中反转一个数字

    We are given an integer number Num as input. The goal is to find the reverse of the number using stack. Stack:- A stack is a data structure in C++ whi…

    2025年12月17日
    000
  • 找出在范围内不可被任何数整除的数字,使用C++

    在本文中,我们将讨论查找 1 到 n(给定)之间的数字的问题,这些数字不能被 2 到 10 之间的任何数字整除。让我们通过一些例子来理解这一点 – Input : num = 14Output : 3Explanation: There are three numbers, 1, 11,…

    2025年12月17日
    000
  • C++程序将一个数字四舍五入到n位小数

    在任何语言中编写程序时,将数字表示为输出是一项有趣且重要的任务。对于整数类型(short、long或medium类型的数据),很容易将数字表示为输出。对于浮点数(float或double类型),有时我们需要将其四舍五入到特定的小数位数。例如,如果我们想将52.24568表示为三位小数,需要进行一些预…

    2025年12月17日
    000
  • 给定一个字符串,其中字母的表示方式被打乱的数字

    在今天的文章中,我们将深入探讨与C++中字符串操作相关的一个独特问题。这个问题是“在给定字符串中,字母表达式被打乱的数字。” 这个问题可以作为一个很好的练习,来提高你在C++中的字符串操作和数据结构技能。 问题陈述 给定一个字符串,任务是识别其中字母表达方式被打乱的数字。例如,如果输入字符串是&#8…

    2025年12月17日
    000
  • 递归程序在C++中检查一个数字是否是回文数

    我们得到一个整数作为输入。目标是使用递归来确定输入数字 Num 是否为回文。 要检查一个数字是否为回文,请反转该数字并检查两个数字是否相同。如果反转后的数等于原数,则为回文。 示例 输入− Num = 34212; 输出− 34212 不是回文! 解释− 如果我们反转 34212,则得到 21243…

    2025年12月17日
    000
  • 在C++中递归插入和遍历链表

    我们得到了用于形成链表的整数值。任务是使用递归方法先插入然后遍历单链表。 在末尾递归添加节点 如果 head 为 NULL → 将节点添加到 head 否则添加到 head( head → next ) 递归遍历节点 如果 head 为 NULL → 退出 立即学习“C++免费学习笔记(深入)”; …

    2025年12月17日
    000
  • C程序用于判断给定的数字是否为强数

    一个强数是一个数字,其中各位数字的阶乘之和等于该数字本身。 示例 123!= 1!+2!+3!                    =1+2+6 =9 在这个例子中,123不是一个强数,因为各位数字的阶乘之和不等于该数字本身。 145!=1!+4!+5!             =1+24+120…

    2025年12月17日
    000
  • 打印给定数字的乘法表在C中

    程序描述 打印给定数字的乘法表 算法 接受用户提供的任何需要形成乘法的数字 从 I 的值开始乘以给定数 (=1) 将给定数与 I 的值递增,直到 I 值小于或等于12. 示例 /* Program to print the multiplication table of a given number…

    2025年12月17日
    000
  • C程序在数组中找到最小和最大的质数

    问题陈述 给定一个包含 n 个正整数的数组。我们必须找到素数具有最小值和最大值的数字。 如果给定的数组是 – arr [] = {10, 4, 1, 12, 13, 7, 6, 2, 27, 33}then minimum prime number is 2 and maximum pr…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信