LeetCode力扣每日一題(Java):27、移除元素

一、題目

二、解題思路

1、我的思路

因為題目中說“元素的順序可以改變。你不需要考慮數組中超出新長度后面的元素。”也就是說:

輸入:nums = [3,2,2,3], val = 3
輸出:2, nums = [2,2]
解釋:函數應該返回新的長度 2并且 nums 中的前兩個元素均為 2。你不需要考慮數組中超出新長度后面的元素。例如,函數返回的新長度為 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也會被視作正確答案。

所以我的想法是,我們要盡量避免在數組中刪除元素這種事件復雜度高的操作,所以當元素值和val相同時,我們可以不必將它刪除,而是將它和數組的最后一個元素交換位置,同時讓數組長度減1

和上一題(上一篇博客)的想法一樣:我們定義一個計數器count,來記錄交換元素的次數,nums.length - count 即為新數組的長度

值得注意的是:在交換之后,我們不知道換到前面的數是否也等于val,所以還需執行i--

于是我寫了如下代碼,第一次提交就通過了,而且代碼時間效率擊敗了100%的Java用戶,給我整笑了

int count = 0;for (int i = 0; i < nums.length - count; i++) {if(nums[i] == val){int temp = nums[i];nums[i] = nums[nums.length - count -1];nums[nums.length - count -1] = temp;count++;i--;}}return nums.length - count;

2、官方題解

方法一:雙指針

這題官方題解的思路和上一題(上一篇博客)基本一樣

class Solution {public int removeElement(int[] nums, int val) {int n = nums.length;int left = 0;for (int right = 0; right < n; right++) {if (nums[right] != val) {nums[left] = nums[right];left++;}}return left;}
}作者:力扣官方題解
鏈接:https://leetcode.cn/problems/remove-element/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

方法二:雙指針優化

class Solution {public int removeElement(int[] nums, int val) {int left = 0;int right = nums.length;while (left < right) {if (nums[left] == val) {nums[left] = nums[right - 1];right--;} else {left++;}}return left;}
}作者:力扣官方題解
鏈接:https://leetcode.cn/problems/remove-element/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

?

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

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

相關文章

JVM性能調優

遇到以下情況&#xff0c;就需要考慮進行JVM調優了&#xff1a; Heap內存&#xff08;老年代&#xff09;持續上漲達到設置的最大內存值&#xff1b; Full GC 次數頻繁&#xff1b; GC 停頓時間過長&#xff08;超過1秒&#xff09;&#xff1b; 應用出現OutOfMemory 等內存異常…

xtts和ogg不選擇?

不選擇ogg的理由&#xff1a; 1.需要在源端創建用戶賦權&#xff0c;啟用數據庫最小日志&#xff0c;附加日志等操作--對生產影響較大 2.外鍵約束過多&#xff0c;割接啟用可能很慢https://www.modb.pro/db/201126--割接停機時間影響 3.初始化配置expdp導出可能快照過舊&#x…

H3C網絡設備交換機風扇亮黃燈故障處理

H3C出現如下報錯信息: [H3C]fan prefer-direction slot 1 power%Jan 1 04:30:13:401 2013 H3C DEV/1/FAN_DIRECTION_NOT_PREFERRED: Fan 1 airflow direction is not preferred on slot 1, please check it. %Jan 1 04:30:13:404 2013 H3C DEV/1/FAN_DIRECTION_NOT_PREFERRED…

代碼隨想錄算法訓練營第四十八天 _ 動態規劃_198.打家劫舍、213.打家劫舍II、337.打家劫舍 III。

學習目標&#xff1a; 動態規劃五部曲&#xff1a; ① 確定dp[i]的含義 ② 求遞推公式 ③ dp數組如何初始化 ④ 確定遍歷順序 ⑤ 打印遞歸數組 ---- 調試 引用自代碼隨想錄&#xff01; 60天訓練營打卡計劃&#xff01; 學習內容&#xff1a; 198.打家劫舍 動態規劃五步曲&a…

深入理解JVM虛擬機第二十八篇:詳解JVM當中方法重寫的本質和虛方法表

&#x1f609;&#x1f609; 歡迎加入我們的學習交流群呀&#xff1a; ??1&#xff1a;這是孫哥suns給大家的福利&#xff01; ??2&#xff1a;我們免費分享Netty、Dubbo、k8s、Mybatis、Spring...應用和源碼級別的視頻資料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&a…

2022年拉丁美洲中東和非洲醫療機器人市場及全球概況報告

今天分享的是機器人系列深度研究報告&#xff1a;《2022年拉丁美洲中東和非洲醫療機器人市場及全球概況報告》。 &#xff08;報告出品方&#xff1a;Apollo Reports&#xff09; 報告共計&#xff1a;195頁 研究方法論 2.1通過桌面研究和內部存儲庫的假設 a)最初&#xff…

基于java的Redis工具類可緩存Object,list,set,map!!!

目錄 簡介&#xff1a;springboot redis啟動器redis配置&#xff1a;工具類 簡介&#xff1a; 添加redis啟動器&#xff0c;配置redis相關配置&#xff0c;使用工具類緩存數據 封裝的方法有&#xff1a;緩存Object,list,set,map類型數據的方法、獲取指定key的value、判斷指定k…

【LeetCode刷題】-- 118.楊輝三角

118.楊輝三角 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res new ArrayList<List<Integer>>();for(int i 0; i < numRows;i){List<Integer> ret new ArrayList<>();for(…

18.Java程序設計-基于Springboot的電影院售票系統的設計與實現

摘要 電影產業在當今社會中占據著重要地位&#xff0c;電影院作為觀影的主要場所&#xff0c;其售票系統的高效性和用戶體驗至關重要。本文基于Spring Boot框架設計并實現了一款電影院售票系統&#xff0c;旨在提高售票效率、優化用戶體驗&#xff0c;并解決傳統售票方式存在的…

PHP 之道(PHP The Right Way 中文版)

PHP 之道&#xff08;PHP The Right Way 中文版&#xff09;

我的NPI項目之Android 顯示 -- 背光的電路小知識

由于使用的高通平臺一直在演化&#xff0c;從SDM660,QCM4290,QCM4490再到QCM6490。產品的背光設計也是一直在迭代。 簡單羅列了一下所經歷的一些設計&#xff0c;簡單的背光也涉及到了很多學問。 先說有哪些類型&#xff1a; 1. SDM660上由PMIC提供了wled給背光, 透過驅動直…

軟件設計師——軟件工程(一)

&#x1f4d1;前言 本文主要是【軟件工程】——軟件設計師——軟件工程的文章&#xff0c;如果有什么需要改進的地方還請大佬指出?? &#x1f3ac;作者簡介&#xff1a;大家好&#xff0c;我是聽風與他&#x1f947; ??博客首頁&#xff1a;CSDN主頁聽風與他 &#x1f304…

FTR223限時回歸?經典三花再加金翅膀,CL500特別款亮相

FTR223可以說是非常經典的一款本田小攀爬車型了&#xff0c;之前我還有幸玩過一段時間&#xff0c;最近本田在泰國車展上展出了CL500的特別版&#xff0c;其中FTR223紀念版的版畫讓人眼前一亮&#xff0c;經典的白、紅、藍三色搭配讓人眼前一亮。 CL500這臺車在國內今年剛上市&…

筆記本電腦安裝了Ubuntu系統設置關蓋/合蓋不掛起/不睡眠

文章目錄 簡介通過gnome-tweaks設置通過更改登錄配置文件logind.conf設置參考資料 簡介 學習工作中需要用到筆記本安裝Ubuntu Linux系統&#xff0c;并且需要關蓋電腦不關機、不掛起且不睡眠。為此&#xff0c;本篇博客整理了兩種常規操作方式&#xff0c;并給了詳細的步驟&am…

Ubuntu20 USB 權限配置

// &#xff08;保姆級&#xff09;Ubuntu下的USB設備永久權限設備起別名方法 cd /etc/udev/rules.dsudo vim motor_control_usb.rules增加如下內容SUBSYSTEMS"usb", ATTRS{idVendor}"0483", ATTRS{idProduct}"2000", GROUP"edda", …

某信服 EDR 白程序DLL劫持

本文用到的白程序回復公眾號20231211進行獲取。 嗯… 記得去年HW的時候某信服給我裝的EDR一直沒卸載&#xff0c;不是不想卸載&#xff0c;是因為卸載要密碼&#xff0c;所以就擺爛了。。。。 找到EDR這個目錄&#xff0c;然后把目錄復制到虛擬機中&#xff0c;然后一個一個e…

相控與斬控交交調壓(THD的計算)

相控與斬控交交調壓&#xff08;THD的計算&#xff09;

LeetCode-1008. 前序遍歷構造二叉搜索樹【棧 樹 二叉搜索樹 數組 二叉樹 單調棧】

LeetCode-1008. 前序遍歷構造二叉搜索樹【棧 樹 二叉搜索樹 數組 二叉樹 單調棧】 題目描述&#xff1a;解題思路一&#xff1a;題目大致意思就是給定一個二叉樹的前序遍歷&#xff0c;求對應的二叉搜索樹。一種比較特殊的點是「二叉搜索樹」的中序遍歷的結果是【有序序列】&am…

【UE5】監控攝像頭效果(下)

目錄 效果 步驟 一、多攝像機視角切換 二、攝像頭自動旋轉巡視 三、攝像頭跟蹤拍攝 效果 步驟 一、多攝像機視角切換 1. 打開玩家控制器“MyPlayerController”&#xff0c;添加一個變量&#xff0c;命名為“BP_SecurityCameraArray”&#xff0c;類型為“BP_SecurityCa…

蛋仔派對巔峰對決驚奇舞臺必勝打法

Hello!大家好呀&#xff01;蛋仔派對我也開始玩啦&#xff01;本期我們發一個蛋仔派對巔峰對決驚奇舞臺的必勝打法吧&#xff01;&#xff08;題外話&#xff1a;我的蛋仔名叫做 酷影kuying 大家能加我的好友嗎&#xff1f;我是新手有老手能帶我上分嘛&#xff1f;…