LeetCode 面試經典 150_數組/字符串_刪除有序數組中的重復項(3_26_C++_簡單)

LeetCode 面試經典 150_刪除有序數組中的重復項(3_26_C++_簡單)

    • 題目描述:
    • 輸入輸出樣例:
    • 題解:
      • 解題思路:
        • 思路一(雙指針):
      • 代碼實現
        • 代碼實現(思路一(雙指針)):
        • 以思路一為例進行調試

題目描述:

給你一個 非嚴格遞增排列 的數組 nums ,請你 原地 刪除重復出現的元素,使每個元素 只出現一次 ,返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。然后返回 nums 中唯一元素的個數。

考慮 nums 的唯一元素的數量為 k ,你需要做以下事情確保你的題解可以被通過:

  • 更改數組 nums ,使 nums 的前 k 個元素包含唯一元素,并按照它們最初在 nums 中出現的順序排列。nums 的其余元素與
    nums 的大小不重要。
  • 返回 k 。

判題標準:

系統會用下面的代碼來測試你的題解:

int[] nums = […]; // 輸入數組
int[] expectedNums = […]; // 長度正確的期望答案

int k = removeDuplicates(nums); // 調用

assert k==expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
如果所有斷言都通過,那么您的題解將被 通過

輸入輸出樣例:

示例 1:
輸入:nums = [1,1,2]
輸出:2, nums = [1,2,_]
解釋:函數應該返回新的長度 2 ,并且原數組 nums 的前兩個元素被修改為 1, 2 。不需要考慮數組中超出新長度后面的元素。

示例 2:
輸入:nums = [0,0,1,1,1,2,2,3,3,4]
輸出:5, nums = [0,1,2,3,4]
解釋:函數應該返回新的長度 5 , 并且原數組 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮數組中超出新長度后面的元素。

提示:
1 <= nums.length <= 3 * 104
-104 <= nums[i] <= 104
nums 已按 非嚴格遞增 排列

題解:

解題思路:

思路一(雙指針):

1、因題目指出非嚴格遞增排列,可以使用指針 k 來記錄不同的元素,指針 i 來遍歷數組,若當前遍歷元素和前一個元素不同則其值復制到 k 位置 k++(k 初始位置為 0),若相同則繼續遍歷數組元素。
2、復雜度分析:
① 時間復雜度:O(n),變量數組一次。
② 空間復雜度:O(1),使用常熟個空間。

代碼實現

代碼實現(思路一(雙指針)):
class Solution{
public:// 定義函數,返回去重后的數組長度,nums是輸入的數組int removeDuplicates(vector<int> &nums){// 初始化k為1,表示去重后的數組的長度int k = 1;// 從第二個元素開始遍歷數組for (int i = 1; i < nums.size(); i++){// 如果當前元素與前一個元素不相等,則說明是一個新元素if (nums[i] != nums[i - 1]){// 將新元素放到索引k的位置,并且k遞增nums[k++] = nums[i];}}// 返回去重后的數組長度kreturn k;}
};
以思路一為例進行調試
#include<iostream>
#include<vector>
using namespace std;class Solution{
public:// 定義函數,返回去重后的數組長度,nums是輸入的數組int removeDuplicates(vector<int> &nums){// 初始化k為1,表示去重后的數組的長度int k = 1;// 從第二個元素開始遍歷數組for (int i = 1; i < nums.size(); i++){// 如果當前元素與前一個元素不相等,則說明是一個新元素if (nums[i] != nums[i - 1]){// 將新元素放到索引k的位置,并且k遞增nums[k++] = nums[i];}}// 返回去重后的數組長度kreturn k;}
};int main(int argc, char const *argv[])
{vector<int> nums={1,1,2};Solution s;cout<<s.removeDuplicates(nums)<<endl;for(auto const &i:nums){cout<<i<<" ";}return 0;
}

LeetCode 面試經典 150_數組/字符串_刪除有序數組中的重復項(3_26)原題鏈接
歡迎大家和我溝通交流(????)

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

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

相關文章

架構篇(一):告別MVC/MVP,為何“組件化”是現代前端的唯一答案?

架構篇(一)&#xff1a;告別MVC/MVP&#xff0c;為何“組件化”是現代前端的唯一答案&#xff1f; 引子&#xff1a;一個困擾前端工程師的“幽靈” 在上一章《序章&#xff1a;拋棄UI&#xff0c;我們來構建一個“看不見”的前端應用》中&#xff0c;我們從零開始構建了一個純…

數組內存學習

一、內存簡介&#xff1a;1.內存分為5塊&#xff1a;a.棧&#xff08;Stack&#xff09;主要運行方法&#xff0c;方法的運行都會進入棧內存運行&#xff0c;云南行完畢之后&#xff0c;需要“彈棧”&#xff0c;為了騰空間。b.堆&#xff08;Heap&#xff09;保存的是對象&…

驗證 GitHub Pages 的自定義域(Windows)

驗證 GitHub Pages 的自定義域 您可以通過驗證您的域來提高自定義域的安全性并避免接管攻擊。 誰可以使用此功能? GitHub Pages 在公共存儲庫中提供 GitHub Free 和 GitHub Free for organizations,在公共和私有存儲庫中提供 GitHub Pro、GitHub Team、GitHub Enterprise Cl…

數字化轉型 - 企業數字化建設的幾點思考

關于企業數字化建設的幾點思考工業軟件領軍人才的培訓課中&#xff0c;如上的一個PPT&#xff0c;給人以許多反思。一是看企業成功的數字化案例時&#xff0c;也許只看到別人面上的東西&#xff0c;可能還有面下很多看不到的東西支撐著&#xff0c;因此可能只看到或學到別人的皮…

深入解析Java內存模型:原理與并發優化實踐

深入解析Java內存模型&#xff1a;原理與并發優化實踐 技術背景與應用場景 隨著多核處理器的普及&#xff0c;Java并發編程已成為后端系統提升吞吐量與響應性能的必備手段。然而&#xff0c;在多線程環境下&#xff0c;不同線程對共享變量的可見性、指令重排以及內存屏障控制都…

《設計模式之禪》筆記摘錄 - 9.責任鏈模式

責任鏈模式的定義責任鏈模式定義如下&#xff1a;Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.…

05-ES6

數據解構SetES6 提供了新的數據結構 Set。它類似于數組&#xff0c;但是成員的值都是唯一的&#xff0c;沒有重復的值Set 本身是一個構造函數&#xff0c;用來生成 Set 數據結構//set集合&#xff0c;成員是唯一的,添加過程中會替換相同的元素。這里相同的標準是const s new S…

正則表達式 \b:單詞邊界

下面舉例說明 \b 用法。\b(?:https?://)(\S)\b各部分功能&#xff1a;\b&#xff1a;單詞邊界&#xff0c;確保匹配的 URL 是獨立的單詞&#xff0c;不會與其他字符粘連。(?:https?://)&#xff1a;非捕獲組&#xff0c;匹配 http:// 或 https://&#xff08;s? 表示 s 可…

從8h到40min的極致并行優化:Spark小數據集UDTF處理的深度實踐與原理剖析

在大數據領域&#xff0c;Spark以其卓越的并行處理能力著稱。但面對小數據集的極致并行需求時&#xff0c;默認優化策略往往成為瓶頸。本文將深入剖析如何通過精準控制分區策略&#xff0c;將僅170條數據的表拆分成170個獨立Task并行執行&#xff0c;實現100%的并行度&#xff…

JAVA算法題練習day1

開始前&#xff1a; 選擇leetcode-hot100。要求每日1道&#xff0c;并且需要親自二刷昨天的題目&#xff08;每一種解法&#xff09;&#xff0c;要做解題筆記并發布CSDN&#xff0c;做完立刻二刷。做題時間為每日12&#xff1a;50起&#xff0c;不拖延&#xff0c;這是學習成…

【Word Press進階】自定義區塊的行為與樣式

前兩篇 【Word Press基礎】創建自定義區塊【Word Press基礎】創建一個動態的自定義區塊 說明白了怎么創建一個簡單的靜態區塊。但實在是太丑了。這里再進行一個優化&#xff0c;讓咱們的區塊好看又好用。 一個合格的區塊應當有著好看的外表&#xff0c;完整的功能&#xff0…

Pygame模塊化實戰:火星救援游戲開發指南

Pygame模塊化實戰&#xff1a;火星救援游戲開發指南用Python打造太空探險游戲&#xff0c;掌握模塊化開發核心技巧一、火星救援&#xff1a;模塊化開發的完美場景??想象這樣的場景??&#xff1a; 你是一名宇航員&#xff0c;被困在火星表面&#xff0c;需要收集資源、修復飛…

三維圖像識別中OpenCV、PCL和Open3D結合的主要技術概念、部分示例

文章目錄1. 三維點云基礎概念點云(Point Cloud)深度圖像(Depth Image)體素(Voxel)2. 點云預處理技術去噪濾波(Noise Filtering)降采樣(Downsampling)3. 特征提取與描述法向量估計(Normal Estimation)關鍵點檢測(Keypoint Detection)特征描述子(Feature Descriptor)4. 點云配準(…

7.23數據結構——單鏈表

文章目錄一、思維導圖二、單鏈表代碼head.htext.cmain.c現象一、思維導圖 二、單鏈表代碼 head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdlib.h> #include <stdio.h> #include <string.h>enum A {FAULSE-1,//失敗返回SUCCESS//成功返回};//給…

某種物聯網SIM卡流量查詢方法

說起流量卡,很多人可能還停留在營業廳辦理的常規套餐里。但其實在 2016 年,三大運營商就推出了一種資費更為劃算的正規流量卡 —— 物聯卡。當年,當不少人還在用 50 元 1G 的流量時,第一批體驗物聯卡的用戶已經享受到了 53 元 6G 的全國流量,徹底擺脫了流量焦慮。不過,至…

XTTS實現語音克隆:精確控制音頻格式與生成流程【TTS的實戰指南】

言簡意賅的講解XTTS解決的痛點 &#x1f4ce; 前置操作&#xff1a;如何使用 OBS Studio 錄制高質量 WAV 語音&#xff08;建議先閱讀并準備錄音樣本&#xff09; 本教程介紹如何使用 Coqui TTS 的 XTTS v2 模型 實現中文語音克隆&#xff0c;支持直接傳入 .wav 文件&#xff0…

C/C++中常量放置在比較操作符左側

目錄 介紹 原因詳解 避免誤用賦值運算符 示例對比 結論 介紹 在編程中&#xff0c;將常量放在比較操作符&#xff08;如 或 !&#xff09;的左側&#xff08;例如 if (42 value)&#xff09;&#xff0c;是一種被稱為 "Yoda 條件"&#xff08;Yoda Conditions…

Node.js 模擬 Linux 環境

&#x1f9e9; 項目介紹 該項目使用 Node.js 實現了一個模擬的 Linux 終端環境&#xff0c;支持多種常見的 Linux 命令&#xff08;如 ls, cd, cat, mkdir, rm 等&#xff09;&#xff0c;所有文件操作都在內存中進行&#xff0c;并持久化到本地文件系統中。適合用于學習 Shel…

HAProxy 實驗指南:從零開始搭建高可用負載均衡系統

引言HAProxy&#xff08;High Availability Proxy&#xff09;是一款高性能的TCP/HTTP負載均衡器和代理服務器&#xff0c;廣泛用于構建高可用、可擴展的Web架構。它由法國開發者Willy Tarreau于2000年開發&#xff0c;如今已成為開源社區和企業級應用中不可或缺的工具。HAProx…

2.10DOM和BOM插入/移除/克隆

1.DOM創建/插入/移除/克隆1.1創建元素前面我們使用過 document.write 方法寫入一個元素&#xff1a;這種方式寫起來非常便捷&#xff0c;但是對于復雜的內容、元素關系拼接并不方便&#xff1b;它是在早期沒有 DOM 的時候使用的方案&#xff0c;目前依然被保留了下來&#xff1…