目錄
範例範例
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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

使用SQL中的MINUS操作符 使用SQL中的MINUS操作符 Feb 18, 2024 pm 04:53 PM

使用SQL中的MINUS操作符

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

iOS 17:如何在待機模式下變更iPhone時鐘樣式

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

JavaScript中產生隨機數字和字串

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

找出在範圍內不可被任何數整除的數字,使用C++

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

C++程式將一個數字四捨五入到n位小數

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

wps文檔插入中國地圖的圖文方法

使用C++編寫程式碼,找到第N個非平方數 使用C++編寫程式碼,找到第N個非平方數 Aug 30, 2023 pm 10:41 PM

使用C++編寫程式碼,找到第N個非平方數

Java中的數字(帶有0前綴和字串) Java中的數字(帶有0前綴和字串) Aug 29, 2023 pm 01:45 PM

Java中的數字(帶有0前綴和字串)

See all articles