目錄
範例範例
Input2
輸入2
Naive Approach
天真的方法
Example
範例
輸出
時間與空間複雜度
高效的方法
結論
首頁 後端開發 C++ 找到透過插入給定數字形成的最小數字

找到透過插入給定數字形成的最小數字

Sep 08, 2023 pm 08:29 PM
數位 插入 最小

找到透過插入給定數字形成的最小數字

在給定的數字中插入一個數字意味著在給定的數字中添加一個新的數字,可以是在數字的前面、後面或中間。我們已經給出了一個數字和一個數字,並且必須以盡可能小的方式將該數字添加到數字中。為了方便插入操作,我們將把數字轉換為字串。此外,給定的數字也可以是負數,因此我們必須考慮這種情況。

範例範例

Input1

的中文翻譯為:

輸入1

Given number: 124
Given digit: 3
Output: 1234 
登入後複製

Explanation − 我們有四個地方可以加給定的數字,結果可以是3124、1324、1234、1243。在這四個中,倒數第二個是最小的。

Input2

的中文翻譯為:

輸入2

Given number: -124
Given digit: 3
Output: -3124 
登入後複製

Explanation − 我們有四個地方可以加給定的數字,結果可以是-3124,-1324,-1234,-1243。在這四個中,第一個是最小的。

Naive Approach

的中文翻譯為:

天真的方法

我們現在已經看過了範例,接下來讓我們看一下我們將執行的解決問題的步驟 -

  • 首先,我們將檢查目前數字是正數還是負數。

  • 如果目前數字為負數,我們將其標記為負數變量,並將當前數字設為正數。

  • 之後,我們將把目前的數字轉換為字串,並根據目前數字的正負呼叫函數basis。

  • 在這些函數中,我們將嘗試在每個位置上適應數字,並根據正數或負數來檢查當前數字是較小還是較大。

  • 如果當前數字是正數,我們將嘗試找到最小的數字並返回。

  • 否則,我們將找到最大的數字,並透過乘以-1來傳回它。

Example

的中文翻譯為:

範例

#include <bits/stdc++.h>
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 <bits/stdc++.h>
using namespace std;
int findMin(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 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)。

以上是找到透過插入給定數字形成的最小數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
使用SQL中的MINUS操作符 使用SQL中的MINUS操作符 Feb 18, 2024 pm 04:53 PM

SQL中MINUS的用法及具體程式碼範例在SQL中,MINUS是一種用於在兩個結果集之間執行差集操作的運算子。它用於從第一個結果集中刪除與第二個結果集中相同的行。 MINUS操作符傳回的結果集將包含僅存在於第一個結果集中的行。下面透過具體的程式碼範例來示範MINUS的用法:假設有兩個表-"table1"和"table2",它們的結構如下:表名:table1字段

iOS 17:如何在待機模式下變更iPhone時鐘樣式 iOS 17:如何在待機模式下變更iPhone時鐘樣式 Sep 10, 2023 pm 09:21 PM

待機是一種鎖定螢幕模式,當iPhone插入充電器並以水平(或橫向)方向定位時啟動。它由三個不同的螢幕組成,其中一個是全螢幕時間顯示。繼續閱讀以了解如何變更時鐘的樣式。 StandBy的第三個畫面顯示各種主題的時間和日期,您可以垂直滑動。某些主題也會顯示其他訊息,例如溫度或下一個鬧鐘。如果您按住任何時鐘,則可以在不同的主題之間切換,包括數位、類比、世界、太陽能和浮動。 Float以可自訂的顏色以大氣泡數字顯示時間,Solar具有更多標準字體,具有不同顏色的太陽耀斑設計,而World則透過突出顯示世界地

C++程式將一個數字四捨五入到n位小數 C++程式將一個數字四捨五入到n位小數 Sep 12, 2023 pm 05:13 PM

在任何語言中編寫程式時,將數字表示為輸出是一項有趣且重要的任務。對於整數類型(short、long或medium類型的資料),很容易將數字表示為輸出。對於浮點數(float或double類型),有時我們需要將其四捨五入到特定的小數位數。例如,如果我們想將52.24568表示為三位小數,需要進行一些預處理。在本文中,我們將介紹幾種技術,透過四捨五入將浮點數表示為特定的小數位數。在不同的方法中,使用類似C的格式化字串、使用精度參數以及使用數學函式庫中的round()函數是很重要的。讓我們逐一來看。帶有

JavaScript中產生隨機數字和字串 JavaScript中產生隨機數字和字串 Sep 02, 2023 am 08:57 AM

產生隨機數或字母數字字串的能力在許多情況下都會派上用場。您可以使用它在遊戲中的不同位置生成敵人或食物。您也可以使用它向用戶建議隨機密碼或建立文件名來保存文件。我寫了一篇關於如何在PHP中產生隨機字母數字字串的教學。我在這篇文章的開頭說,幾乎沒有事件是真正隨機的,同樣的情況也適用於隨機數或字串生成。在本教程中,我將向您展示如何在JavaScript中產生偽隨機字母數字字串。在JavaScript中產生隨機數字讓我們從產生隨機數開始。我想到的第一個方法是Math.random(),它回傳一個浮

wps文檔插入中國地圖的圖文方法 wps文檔插入中國地圖的圖文方法 Mar 27, 2024 pm 02:01 PM

1.開啟wps軟體,進入wps文字的操作介面。 2、在該介面內找到插入選項。 3.點選插入選項,在其編輯區域內找到形狀選項。 4.點選形狀選項,在其子級選單中找到推薦選項。 5、在推薦選項內找到中國地圖選項。 6.點選中國地圖選項,用滑鼠左鍵在編輯輸入區裡拖曳,就得到了我們需要的中國地圖。

找出在範圍內不可被任何數整除的數字,使用C++ 找出在範圍內不可被任何數整除的數字,使用C++ Sep 13, 2023 pm 09:21 PM

在本文中,我們將討論查找1到n(給定)之間的數字的問題,這些數字不能被2到10之間的任何數字整除。讓我們透過一些例子來理解這一點-Input:num=14Output:3Explanation:Therearethreenumbers,1,11,and13,whicharenotdivisible.Input:num=21Output:5Explanation:Therearefivenumbers1,11,13,17,and19,whicharen的解題方法簡單方法如果

真我 GT Neo6 定檔 5 月 9 日!機圈首場 AI 數位人發表會 真我 GT Neo6 定檔 5 月 9 日!機圈首場 AI 數位人發表會 May 08, 2024 pm 12:49 PM

5月7日,我手機廠商正式宣布,本公司GTNeo6發表會定檔5月9日。我GTNoe6被定位為"性能風暴",旨在攪動中端機風雲。除此之外,該發表會也將是手機圈首場AI數位人發表會。屆時,真我realme副總裁、全球行銷總裁、中國區總裁徐起將以數位人的形式出現在發表會上。數位人徐起根據官方介紹,真我GTNoe6代號為"颶風",更快更強,將挑戰最強第三代驍龍8s旗艦,挑戰同檔最強產品力。日前,真我GTNeo6被發現直接在電商平台上架,部分核心配置曝光,顯示該機不僅搭載了驍龍8s處理器,還支援120W閃充

Java程序,用來檢查一個數字是否可以被5整除 Java程序,用來檢查一個數字是否可以被5整除 Sep 13, 2023 pm 09:01 PM

在數學中,5的整除規則規定,如果數字以0或5結尾,則它可以被5整除。還有另一種方法來決定5的整除規則,如果餘數為0,則傳回該數字能被5整除。 mod(%)運算子通常在程式設計中用於整除。讓我們舉一個例子。給定的數字是525,數字以5結尾,可以被5整除。給定的數字是7050,數字以0結尾,並且可以被5整除。給定的數字是678,數字不以0和5結尾,不能被5整除。在本文中,我們將解決該數字是否能被5整除的問題。演算法以下步驟是我們將使用java.util.*套件來取得原始資料類型的使用者輸入。從主類

See all articles