數組題目: 665. 非遞減數列、453. 最小移動次數使數組元素相等、283. 移動零、189. 旋轉數組、396. 旋轉函數

665. 非遞減數列

題解:

題目要求一個非遞減數列,我們可以考慮需要更改的情況:

  • nums = {4, 2, 5}

對于這個nums,由于2的出現導致非遞減,更改的情況就是要么4調到<=2,要么2調到4,5.

  • nums = {1, 4, 2, 5}

對于這個nums,由于2的出現導致非遞減,更改的情況就是要么4調到1,,2,要么2調到4,5.

  • nums = {3, 4, 2, 5}

對于這個nums,由于2的出現導致非遞減,更改的情況就是2調到4,5.

所以算法就是:

如果按照1的情況,當i = 1,那么直接就把nums[i - 1]改成nums[i],nums[i]不動

如果按照2的情況,當nums[i - 2] < nums[i],那我們就優先考慮把nums[i - 1]?調小到?>= nums[i - 2] 并且 <= nums[i]

如果按照1的情況,nums[i - 2] > nums[i],那我們就調整nums[i],讓nums[i] = nums[i - 1]。

代碼:

class Solution {public boolean checkPossibility(int[] nums) {int count = 0;//統計需要滿足非遞減的次數for(int i = 1; i < nums.length;i++){if(nums[i] < nums[i - 1]){if(i == 1 || nums[i] >= nums[i - 2]){// i=1就是第一個情況,后面的是第二種nums[i - 1] = nums[i];}else{nums[i] = nums[i - 1];}count++;}}return count <= 1;}
}

453. 最小移動次數使數組元素相等

思路:

題目要求我們每次操作將會讓n-1個元素增加1,來滿足要求。我們可以反過來思考,找到最小的數,遍歷其他的數,累加所有元素和最小的元素的差距。

代碼:

class Solution {public int minMoves(int[] nums) {int minNum = Arrays.stream(nums).min().getAsInt();int res = 0;for(int num : nums){res += num - minNum;}return res;}
}

283. 移動零

思路:(雙指針)

我們定義兩個指針left, right都等于0,遍歷nums,如果nums[right] != 0,那我們就讓nums[left]和nums[right]進行交換,再把Left增加。如果等于0,那就讓right++。

其實Left就是第一個0的位置,right就是讓他找到不為0的地方。


189. 旋轉數組

思路:

  • 第一步:先翻轉數組里的數
  • 第二步:翻轉前[0, k - 1]個數
  • 第三步:翻轉后面[k, n]的數

代碼:

class Solution {public void rotate(int[] nums, int k) {k %= nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);}public void reverse(int[] nums, int left, int right){while(left <= right){int temp = nums[left];nums[left] = nums[right];nums[right] = temp;left++;right--;}}
}

396. 旋轉函數

思路:

找規律

所以對應的公式:

F[i] = F[i - 1] + sum - n * nums[n - i];

代碼:

class Solution {public int maxRotateFunction(int[] nums) {int sum = 0, f = 0, n = nums.length, ans = 0;for(int i = 0; i < n; i++){sum += nums[i];f += i * nums[i];//f(0);}ans = f;for(int i = 1; i < n; i++){f = f + sum - n * (nums[n - i]);//f[i] = f[i - 1] + sum -n * nums[n - i];ans = Math.max(ans, f);}return ans;}
}

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

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

相關文章

人工智能-注意力機制之注意力匯聚:Nadaraya-Watson 核回歸

查詢&#xff08;自主提示&#xff09;和鍵&#xff08;非自主提示&#xff09;之間的交互形成了注意力匯聚&#xff1b; 注意力匯聚有選擇地聚合了值&#xff08;感官輸入&#xff09;以生成最終的輸出。 本節將介紹注意力匯聚的更多細節&#xff0c; 以便從宏觀上了解注意力機…

Lubuntu 23.10用戶可使用LXQt 1.4桌面

導讀在眾多 Lubuntu 用戶的要求下&#xff0c;Lubuntu 開發人員決定將 LXQt 1.4 桌面環境向后移植到最新的 Lubuntu 23.10 &#xff08;Mantic Minotaur&#xff09; 版本。 是的&#xff0c;您沒看錯&#xff0c;您現在可以使用官方的 Lubuntu Backports PPA&#xff08;個人軟…

黑馬點評筆記 分布式鎖

文章目錄 分布式鎖基本原理和實現方式對比Redis分布式鎖的實現核心思路實現分布式鎖版本一Redis分布式鎖誤刪情況說明解決Redis分布式鎖誤刪問題分布式鎖的原子性問題分布式鎖-Redission分布式鎖-redission可重入鎖原理分布式鎖-redission鎖重試和WatchDog機制分布式鎖-redissi…

01、Tensorflow實現二元手寫數字識別

01、Tensorflow實現二元手寫數字識別&#xff08;二分類問題&#xff09; 開始學習機器學習啦&#xff0c;已經把吳恩達的課全部刷完了&#xff0c;現在開始熟悉一下復現代碼。對這個手寫數字實部比較感興趣&#xff0c;作為入門的素材非常合適。 基于Tensorflow 2.10.0 1、…

pandas獲取年月第一天、最后一天,加一秒、加一天、午夜時間

Timestamp對象 # ts = pandas.Timestamp(year=2023, month=10, day=15, # hour=15, minute=5, second=50, tz="Asia/Shanghai") ts = pandas.Timestamp("2023-10-15 15:05:50", tz="Asia/Shanghai") # 2023-10-15 15:05…

數據丟失預防措施包括什么

數據丟失預防措施是保護企業或個人重要數據的重要手段。以下是一些有效的預防措施&#xff1a; 可以通過域之盾軟件來實現數據防丟失&#xff0c;具體的功能包括&#xff1a; https://www.yuzhidun.cn/https://www.yuzhidun.cn/ 1、備份數據 定期備份所有重要數據&#xff0…

unittest指南——不拼花哨,只拼實用

&#x1f4e2;專注于分享軟件測試干貨內容&#xff0c;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01;&#x1f4e2;交流討論&#xff1a;歡迎加入我們一起學習&#xff01;&#x1f4e2;資源分享&#xff1a;耗時200小時精選的「軟件測試」資…

centos7 docker開啟認證的遠程端口2376配置

docker開啟2375會存在安全漏洞 暴露了2375端口的Docker主機。因為沒有任何加密和認證過程&#xff0c;知道了主機IP以后&#xff0c;&#xff0c;任何人都可以管理這臺主機上的容器和鏡像&#xff0c;以前貪圖方便&#xff0c;只開啟了沒有認證的docker2375端口&#xff0c;后…

代碼隨想錄算法訓練營第五十三天|1143.最長公共子序列 1035.不相交的線 53. 最大子序和

文檔講解&#xff1a;代碼隨想錄 視頻講解&#xff1a;代碼隨想錄B站賬號 狀態&#xff1a;看了視頻題解和文章解析后做出來了 1143.最長公共子序列 class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:dp [[0] * (len(text2) 1) for _ i…

機器學習入門

簡介 https://huggingface.co/是一個AI社區&#xff0c;類似于github的地位。它開源了許多機器學習需要的基礎組件如&#xff1a;Transformers, Tokenizers等。 許多公司也在不斷地往上面提交新的模型和數據集&#xff0c;利用它你可以獲取以下內容&#xff1a; Datasets : 數…

hikariCP 數據庫連接池配置

springBoot 項目默認自動使用 HikariCP &#xff0c;HikariCP 的性能比 alibaba/druid快。 一、背景 系統中多少個線程在進行與數據庫有關的工作&#xff1f;其中&#xff0c;而多少個線程正在執行 SQL 語句&#xff1f;這可以讓我們評估數據庫是不是系統瓶頸。 多少個線程在…

基于法醫調查算法優化概率神經網絡PNN的分類預測 - 附代碼

基于法醫調查算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于法醫調查算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于法醫調查優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要&#xff1a;針對PNN神…

【學生成績管理】數據庫示例數據(MySQL代碼)

【學生成績管理】數據庫示例數據&#xff08;MySQL代碼&#xff09; 目錄 【學生成績管理】數據庫示例數據&#xff08;MySQL代碼&#xff09;一、創建數據庫二、創建dept&#xff08;學院&#xff09;表1、創建表結構2、添加示例數據3、查看表中數據 三、創建stu&#xff08;學…

35.邏輯運算符

目錄 一.什么是邏輯運算符 二.C語言中的邏輯運算符 三.邏輯表達式 三.視頻教程 一.什么是邏輯運算符 同時對倆個或者倆個以上的表達式進行判斷的運算符叫做邏輯運算符。 舉例&#xff1a;比如去網吧上網&#xff0c;只有年滿十八周歲并且帶身份證才可以上網。在C語言中如果…

為什么 Flink 拋棄了 Scala

曾經紅遍一時的Scala 想當初Spark橫空出世之后&#xff0c;Scala簡直就是語言界的一顆璀璨新星&#xff0c;惹得大家紛紛側目&#xff0c;連Kafka這類技術框架也選擇用Scala語言進行開發重構。 可如今&#xff0c;Flink竟然公開宣布棄用Scala 在Flink1.18的官方文檔里&#x…

國家開放大學的學子們 練習題 走起!

試卷代號&#xff1a;1356 高級英語聽說(2) 參考 試題 Section One (20 points, 2 points each) Directions: Listen to the conversation and fill in the blanks with the words you hear. Write the words on the Answer Sheet The conversation will be read TWICE. M…

windows11上安裝WSL

Windows電腦上要配置linux&#xff08;這里指ubuntu&#xff09;開發環境&#xff0c;主要有三種方式&#xff1a; 1&#xff09;在windows上裝個虛擬機&#xff08;比如vmware&#xff09;。缺點是vmware加載ubuntu后系統會變慢很多&#xff0c;而且需要通過samba來實現window…

使用Java連接Hbase

我在網上試 了很多代碼&#xff0c;但是大部分都不能實現&#xff0c;Java連接Hbase&#xff0c;一直報一個錯 java.util.concurrent.ExecutionException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode NoNode for /hbase/hbaseid一直也不清楚為什…

計算機組成原理。3-408

1.動態存儲和靜態存儲 2.雙端口RAM 注意&#xff1a;cpu通過地址線和數據線讀寫數據時&#xff0c;不能同時寫&#xff0c;但可以同時讀&#xff0c;也不能一邊讀一邊寫。 3.多體并行存儲器 分為高位存儲和低位存儲 小結 4.磁盤存儲器的組成 5.磁盤的性能指標 磁盤讀寫尋道…

如何對網站進行滲透測試

信息搜集 信息搜集拿到域名后獲取真實IP&#xff0c;如果存在CDN想辦法繞過端口掃描&#xff0c;針對開放的端口在獲取客戶同意的前提下進行爆破查找網站子域名&#xff0c;后臺目錄判斷網站的CMS 可以使用 Wappalyzer插件 whatcms 是一個可以用來確定特定網站正在使用的什么…