算法題(力扣每日一題)—改變一個整數能得到的最大差值

給你一個整數 num 。你可以對它進行以下步驟共計 兩次:

選擇一個數字 x (0 <= x <= 9).
選擇另一個數字 y (0 <= y <= 9) 。
數字 y 可以等于 x 。
將 num中所有出現 x 的數位都用 y 替換。
令兩次對 num 的操作得到的結果分別為 a 和 b 。
請你返回 a 和 b 的 最大差值 。

注意,新的整數(a 或 b)必須不能 含有前導 0,并且 非 0。

思路

貪心
對于最大值a:
肯定是越高位越大越好,所以從最高位開始往后看,第一個不是9的位,這一位數全改成9。

比如 9868 —> 9969

對于最小值b:
肯定是越高位越小越好,
但是有個條件,不能為0,也不能有前置0,
所以不能直接從最高位開始看,要先看最高位是不是1,
①如果不是1,就直接把他和它相同的改成1就行了;
②如果是1,就從后看第一個不是1也不是0的改成0。(這里不能直接按不是0的都改成0來算,因為不是0也包括了1,要是1的話會把第一位的1也改成0,就有前置0了)

比如 120 —> 100,就不能把第一位的1改成0,要不然就是 020 有前置0了。
比如 110 —> 110,就不能把第二位的1改成0,要不然就是000了。

代碼

①給的是int型的,因為要挨位訪問,所以先轉成String,再轉成char[],因為char[]訪問效率比String高。
②然后因為有 “將num中所有出現 x 的數位都用 y 替換" 這個操作,可以單獨封裝一下,用String的replace方法,這個方法不會改變原String,只會返回新String。
③a和b要初始化都等于num,這樣防止兩次都沒有操作的情況
比如 999、111、100

class Solution {public int replace(String str, char c, char toWhat){String temp = str.replace(c, toWhat);   // 不會改變原字符串return Integer.valueOf(temp);}public int maxDiff(int num) {String numStr = String.valueOf(num);char[] numChar = numStr.toCharArray();int a=num, b=num;     // 初始值num,防止999和000或者111之類的情況// 找最大for(char numC : numChar){if(numC != '9'){a = replace(numStr, numC, '9');break;}}// 找最小if(numChar[0] != '1'){b = replace(numStr, numChar[0], '1');}else{for(int i=1; i<numChar.length; i++){if(numChar[i]!='0' && numChar[i]!='1'){b = replace(numStr, numChar[i], '0');break;}}}return a-b;}
}

時間復雜度:O(logN)
空間復雜度:O(logN)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85083.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85083.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85083.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kubernetes筆記

1.簡介 Kubernetes的本質是一組服務器集群&#xff0c;它可以在集群的每個節點上運行特定的程序&#xff0c;來對節點中的容器進行管理。目的是實現資源管理的自動化&#xff0c;主要提供了如下的主要功能&#xff1a; 自我修復&#xff1a;一旦某一個容器崩潰&#xff0c;能夠…

Flutter——數據庫Drift開發詳細教程(八)

目錄 自定義 SQL 類型定義類型使用自定義類型在 Dart 中在 SQL 中 方言意識支持的 SQLite 擴展json1fts5地緣壟斷 自定義 SQL 類型 Drift 的核心庫主要以 SQLite3 為目標平臺編寫。這體現在Drift 開箱即用的SQL 類型上——這些類型由 SQLite3 支持&#xff0c;并新增了一些由 …

安卓遠控工具 CRaxsRat v7.6 安裝與使用教程(僅供合法測試學習)

在當今的信息安全領域&#xff0c;移動設備已成為重點關注對象。本文將介紹一款用于遠程管理與教學研究的工具 —— CRaxsRat v7.6&#xff0c;并詳細講解其安裝與使用流程。本教程僅供網絡安全愛好者在合法授權環境下學習使用&#xff0c;嚴禁任何非法用途。 &#x1f50d; 一…

容器的本質是進程

前言 Linux 容器的本質&#xff0c;是一個被隔離和限制的進程。 與虛擬機不同&#xff0c;容器無需虛擬化一個完整的操作系統&#xff0c;所以它比虛擬機更輕量級&#xff0c;效率也更高。 Linux 容器通過 namespaces 技術來隔離容器的視圖&#xff0c;使得容器進程只能看到…

LeetCode 第75題:顏色分類

給定一個包含紅色、白色和藍色、共n個元素的數組nums&#xff0c;原地對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排序。 使用整數0、1和2分布表示紅色、白色和藍色。 必須在不使用庫內置sort函數的情況下解決這個問題。 示例1&a…

PHP基礎-函數

函數是一段可重復使用的代碼塊&#xff0c;可以將一系列操作封裝起來&#xff0c;使代碼更加模塊化、可維護和可重用&#xff0c;來大大節省我們的開發時間和代碼量&#xff0c;提高編程效率。在PHP中你可以使用&#xff1a; 內置函數&#xff08;如 strlen()、array_merge()&a…

【FastAPI高級實戰】結合查詢參數與SQLModel Joins實現高效多表查詢(分頁、過濾、計數)

想象一下&#xff0c;你正在開發一個超酷的Web應用&#xff0c;比如一個博客平臺或者一個在線商店。你的API不僅要能把數據&#xff08;比如文章列表、商品信息&#xff09;展示給用戶&#xff0c;更要聰明到能理解用戶的各種“小心思”&#xff1a;用戶可能想看最新的文章、搜…

華為OD-2024年E卷-通過軟盤拷貝文件[200分] -- python

問題描述&#xff1a; 有一名科學家想要從一臺古董電腦中拷貝文件到自己的電腦中加以研究。但此電腦除了有一個3.5寸軟盤驅動器以外&#xff0c;沒有任何手段可以將文件持貝出來&#xff0c;而且只有一張軟盤可以使用。因此這一張軟盤是唯一可以用來拷貝文件的載體。科學家想要…

Keepalived 高可用,nginx + keepalived , lvs + keepalived、 數據庫+keepalived

keepalived 官網 Keepalived 可以用來防止服務器單點故障的發生 # 原理 是基于VRRP協議實現的&#xff0c;當backup收不到vrrp包時&#xff0c;就認為master宕機了&#xff0c;這時就需要根據VRRP的優先級來選舉一個backup 當master&#xff0c;就實現服務的HA&#xff08;高…

開疆智能Devicenet轉ModbusTCP網關連接臺達從站通訊模塊配置案例

本案例是通過開疆智能Devicenet轉ModbusTCP網關連接臺達Devicenet從站通訊模塊DVPDT02-H2的配置案例&#xff0c;網關作為ModbusTCP服務器和Devicenet主站&#xff0c;連接臺達Devicenet從站&#xff0c; 配置過程&#xff1a; 首先配置Devicenet從站&#xff0c;先設置從站De…

網絡NAT是什么

網絡NAT&#xff08;Network Address Translation&#xff0c;網絡地址轉換&#xff09;是一種用于計算機網絡中的技術&#xff0c;主要目的是在私有網絡與公有網絡&#xff08;比如互聯網&#xff09;之間轉換IP地址&#xff0c;實現私有網絡中的多臺設備通過一個公網IP訪問外…

React狀態管理——react-redux

目錄 一、redux介紹 二、安裝 三、基本實現步驟 3.1 創建Action Types 3.2 創建counterAction 3.3 創建counterReducer 3.4 結合所有Reducer 3.5 創建store 3.6 入口文件中提供store 3.7 在組件中的使用 3.8 使用thunk實現異步支持 3.8.1 安裝 3.8.2 在counterAct…

Java 零工市場小程序 | 靈活就業平臺 | 智能匹配 | 日結薪系統 | 用工一站式解決方案

在就業形勢如此嚴峻的情況下&#xff0c;很多小伙伴都會選擇零工的工作方式來賺取外快&#xff0c;很多用人單位也會因為職為短暫空缺或是暫時人手不夠而選擇招用兼職人員。 而Java 作為企業級開發的主流語言&#xff0c;以其卓越的性能和穩定性著稱。把零工的需求&#xff08…

數據可視化——一圖勝千言

第04篇&#xff1a;數據可視化——一圖勝千言 寫在前面&#xff1a;大家好&#xff0c;我是藍皮怪&#xff01;前面幾篇我們聊了統計學的基本概念、數據類型和描述性統計&#xff0c;這一篇我們要聊聊數據分析中最直觀、最有趣的部分——數據可視化。你有沒有發現&#xff0c;很…

1.1 Linux 編譯FFmpeg 4.4.1

一、安裝編譯工具 sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev說明&#xff1a; autoconf&#xff1a;生成 configure 腳本&#xff0c;用于自動配置源碼。automake&#xff1a;與 autoconf 配合&#xff0c;…

【圖片識別改名】如何批量識別大量圖片的文字并重命名圖片,基于WPF和京東OCR識別接口的實現方案

應用場景 在企業文檔管理、數字圖書館、電商商品管理等場景中&#xff0c;經常需要處理大量圖片中的文字信息。例如&#xff1a; 電商平臺需要將商品圖片中的型號、規格等信息提取出來作為文件名圖書館需要將掃描的圖書頁面識別為文字并整理歸檔企業需要將紙質文檔電子化并按…

簡歷模板2——數據挖掘工程師5年經驗

姓名 / Your Name 數據挖掘工程師 | 5年經驗 | 推薦/風控/圖模型 &#x1f4de; 138-XXXX-XXXX | ?? your.emailexample.com | &#x1f310; github.com/yourname | &#x1f4cd; 北京 &#x1f3af; 個人簡介 / Summary 5年大廠數據挖掘經驗&#xff0c;碩士學歷。擅長推…

CSS3 漸變效果

1. 引言 CSS3 漸變能夠在指定顏色之間創建平滑過渡效果。這種設計元素不僅能為網頁增添豐富的視覺層次&#xff0c;更是現代網頁設計的重要組成部分。CSS3 提供兩種主要的漸變類型&#xff1a;線性漸變(Linear Gradient) - 沿直線方向進行顏色過渡&#xff1b;徑向漸變(Radial…

A Survey on 3D Gaussian Splatting——3D高斯領域綜述

原文鏈接&#xff1a;[2401.03890] A Survey on 3D Gaussian Splatting 動態更新的GitHub倉庫&#xff08;包含性能對比與最新文獻追蹤&#xff09;&#xff1a; https://github.com/guikunchen/3DGS-Benchmarks https://github.com/guikunchen/Awesome3DGS 摘要&#xff1…

計算機網絡 期末實訓 eNSP 校園網

eNSP 綜合實訓 小型校園網 計算機網絡期末實訓 01 搭建拓撲 1.設計任務 構建一個小型校園網絡,涵蓋以下設備與區域: 學生宿舍區:50臺計算機辦公樓區:30臺計算機(細分為財務部門、人事部門及其他科室)圖書館:10臺計算機教學樓:30臺計算機服務器集群:2臺服務器,分別用…