數據結構(2)順序表算法題

一、移除元素

1、題目描述

?

2、算法分析?

思路1:查找val值對應的下標pos,執行刪除pos位置數據的操作。

????????該方法時間復雜度為O(n^2),因此不建議使用。

思路2:創建新數組(空間大小與原數組一致),遍歷原數組,將非val值放到tmp數組中,再將tmp數組拷貝回原數組。

????????該方法時間復雜度O(N),空間復雜度O(N)。體現了用空間換時間的思想。

思路3:雙指針法

? ? ? ? 創建兩個變量dst 和 src,(1)nums[src] == val,src++? ?

(2)nums[src] != val,賦值(src給dst),dst++,src++

3、參考代碼

int removeElement(int* nums, int numsSize, int val) 
{//定義兩個變量int dst = 0, src = 0;while(src < numsSize){//src值和val比較if(nums[src] != val){nums[dst] = nums[src];dst++;}src++;}return dst;
}

二、刪除有序數組中的重復項

1、題目描述

2、算法分析?

思路:雙指針法

? ? ? ? 創建兩個變量,分別指向起始位置和下一個位置。

(1)nums[src] == nums[dst],src++

(2)nums[src] != nums[dst],dst++,賦值(src給dst),src++

3、參考代碼

int removeDuplicates(int* nums, int numsSize) 
{int dst = 0, src = dst + 1;while(src < numsSize){if(nums[src] != nums[dst]){dst++;nums[dst] = nums[src];}src++;} return dst + 1;
}

三、合并兩個有序數組

1、題目描述

2、算法分析?

思路1:先合并,再排序

? ? ? ? 冒泡排序:O(N^2)? ? ? ?qsort:O(NlogN)

思路2:空間換時間

? ? ? ? 創建新數組tmp,空間大小和nums1一致,遍歷兩個原數組的數據并比較大小,放到tmp中。

思路3:從后往前比較大小,找大的

? ? ? ? 注意:不能從前往后比較大小找小的,因為小的往前放會導致數據被覆蓋!

?

?3、參考代碼

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) 
{int l1 = m - 1;int l2 = n - 1;int l3 = m + n - 1;while(l1 >= 0 && l2 >= 0){//比較大小,找大if(nums1[l1] < nums2[l2]){nums1[l3] = nums2[l2];l2--;l3--;}else{nums1[l3] = nums1[l1];l1--;l3--;}}//要么l1先越界,要么l2先越界while(l2 >= 0){nums1[l3] = nums2[l2];l3--;l2--;}
}

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

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

相關文章

汽車電子架構

本文試圖從Analog Devices官網中的汽車解決方案視角帶讀者構建起汽車電子的總體架構圖&#xff0c;為國內熱愛和從事汽車電子行業的伙伴們貢獻一份力量。 一 、汽車電子架構總覽 整個汽車電子包括四個部分&#xff1a;車身電子&#xff08;Body Electronics&#xff09;、座艙與…

pycharm 2025 專業版下載安裝教程【附安裝包】

安裝之前&#xff0c;請確保已經關閉所有安全軟件&#xff08;如殺毒軟件、防火墻等&#xff09;安裝包 &#x1f447;鏈接&#xff1a;https://pan.xunlei.com/s/VOU-5_L1KOH5j3zDaaCh-Z28A1# 提取碼&#xff1a;6bjy下載 PyCharm2025專業版 安裝包 并 進行解壓運行 pycharm-2…

在 Java 世界里讓對象“旅行”:序列化與反序列化

Java 生態里關于 JSON 的序列化與反序列化&#xff08;以下簡稱“序列化”&#xff09;是一個久經考驗的話題&#xff0c;卻常因框架繁多、配置瑣碎而讓初學者望而卻步。本文將圍繞一段極簡的 JsonUtils 工具類展開&#xff0c;以 FastJSON 與 Jackson 兩大主流實現為例&#x…

High Speed SelectIO Wizard ip使用記錄

本次實驗的目的是通過VU9P開發板的6個TG接口&#xff0c;采用固定連接的方式&#xff0c;即X和X-維度互聯&#xff0c;其框圖如下所示&#xff1a;IP參數配置通過調用High Speed SelectIO Wizard來實現數據通路&#xff0c;High Speed SelectIO Wizard ip有24對數據通道&#x…

Execel文檔批量替換標簽實現方案

問題背景需求&#xff1a;俺現網班級作為維度&#xff0c;批量導出每個班級學員的數據&#xff0c;excel的個數在1k左右&#xff0c;每一張表的人數在90左右。導出總耗時在10小時左右。代碼編寫完成并導出現網數據后&#xff0c;發現導出的標題錯了。解決方案1.通過修改代碼&am…

SpringBoot配置多數據源多數據庫

Springboot支持配置多數據源。默認情況&#xff0c;在yml文件中只會配置一個數據庫。如果涉及到操作多個數據庫的情況&#xff0c;在同實例中&#xff08;即同一個ip地址下的不同數據庫&#xff09;&#xff0c;可以采用數據庫名點數據庫表的方式&#xff0c;實現跨庫表的操作。…

Rocky9.4部署Zabbix7

一、配置安裝源 rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm ? yum clean all 二、安裝Zabbix server&#xff0c;Web前端&#xff0c;agent yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf z…

【Java】對象類型轉換(ClassCastException)異常:從底層原理到架構級防御,老司機的實戰經驗

在開發中&#xff0c;ClassCastException&#xff08;類轉換異常&#xff09;就像一顆隱藏的定時炸彈&#xff0c;常常在代碼運行到類型轉換邏輯時突然爆發。線上排查問題時&#xff0c;這類異常往往因為類型關系復雜而難以定位。多數開發者習慣于在轉換前加個instanceof判斷就…

探路者:用 AI 面試加速人才集結,為戶外愛好者帶來更專業的服務

作為深耕戶外用品領域的知名品牌&#xff0c;探路者已構建起覆蓋全國的銷售服務網絡&#xff0c;上千品種的產品矩陣更是為品牌在市場中站穩腳跟提供了有力支撐。對探路者來說&#xff0c;要持續為戶外愛好者帶來專業且貼心的體驗&#xff0c;專業人才是核心支撐。然而&#xf…

LeetCode——面試題 05.01 插入

通過萬歲&#xff01;&#xff01;&#xff01; 題目&#xff1a;一共會給四個數&#xff0c;分別是N、M、i、j&#xff0c;然后希望我們把N和M抓怒換為2進制以后&#xff0c;將M的二進制放在i到j之間的區域&#xff0c;如果M的二進制長度小于i-j1&#xff0c;則前面補0即可。最…

前端設計中如何在鼠標懸浮時同步修改塊內樣式

雖然只是一個小問題&#xff0c;但這個解決問題的過程也深化了自己對盒子模型的理解問題緣起正在寫一個登錄注冊的小窗口&#xff0c;想要在鼠標懸浮階段讓按鈕和文字都變色&#xff0c;但是發現實操的時候按鈕和文字沒辦法同時變色鼠標懸停前鼠標懸停后問題分析仔細分析了下該…

航空發動機高速旋轉件的非接觸式信號傳輸系統

航空發動機是飛機動力系統的核心&#xff0c;各種關鍵部件如渦輪、壓氣機等&#xff0c;經常處于極端高溫、高速旋轉的工作環境中。航空發動機內的傳感器數據&#xff0c;如何能夠穩定可靠的通過無線的方式傳輸到檢測太&#xff0c;一直是業內的一個難點和痛點。在這個領域&…

【postgresql按照逗號分割字段,并統計數量和求和】

postgresql按照逗號分割字段&#xff0c;并統計數量和求和postgresql按照逗號分割字段&#xff0c;并統計數量和求和postgresql按照逗號分割字段&#xff0c;并統計數量和求和 SELECT ucd, p ,tm, step, unitcd, tm_end from resource_calc_scene_rain_bound_value_plus whe…

「iOS」————繼承鏈與對象的結構

iOS學習前言對象的底層結構isa的類型isa_tobjc_class & objc_object類信息的靜態與動態存儲&#xff08;ro、rw、rwe機制&#xff09;cachebits繼承鏈isKindOfClass和isMemberOfClassisKindOfClass:isMemberofClass前言 對 對象底層結構的相關信息有點遺忘&#xff0c;簡略…

代碼隨想錄day46dp13

647. 回文子串 題目鏈接 文章講解 回溯法 class Solution { public:int count 0;// 檢查字符串是否是回文bool isPalindrome(string& s, int start, int end) {while (start < end) {if (s[start] ! s[end]) return false;start;end--;}return true;}// 回溯法&#…

學習隨筆錄

#61 學習隨筆錄 今日的思考 &#xff1a; 反思一下學習效率低下 不自律 或者 惰性思維 懶得思考 又或者 好高婺遠 頂級自律從不靠任何意志力&#xff0c;而在于「平靜如水的野心」_嗶哩嗶哩_bilibili 然后上面是心靈雞湯合集 vlog #79&#xff5c;程序員遠程辦公的一天…

python-函數進階、容器通用方法、字符串比大小(筆記)

python數據容器的通用方法#記住排序后容器類型會變成list容器列表 list[1,3,5,4,6,7] newListsorted(list,reverseTrue) print(newList) [7, 6, 5, 4, 3, 1]list[1,3,5,4,6,7] newListsorted(list,reverseFalse) print(newList) [1, 3, 4, 5, 6, 7]字典排序的是字典的key字符串…

關閉chrome自帶的跨域限制,簡化本地開發

在開發時為了圖方便,簡化本地開發,懶得去后端配置允許跨域,那就可以用此方法1. 右鍵桌面上的Chrome瀏覽器圖標&#xff0c;選擇“創建快捷方式”到桌面。2. 在新創建的快捷方式的圖標上右鍵&#xff0c;選擇“屬性”。3. 在彈出窗口中的“目標”欄中追加&#xff1a; --allow-r…

C++___快速入門(上)

第一個C程序#include<iostream> using namespace std; int main() {cout << "hello world !" << endl;return 0; }上邊的代碼就是用來打印字符串 “hello world !” 的&#xff0c;可見&#xff0c;與C語言還是有很大的差別的&#xff0c;接下來我…

構建企業級Docker日志驅動:將容器日志無縫發送到騰訊云CLS

源碼地址:https://github.com/k8scat/docker-log-driver-tencent-cls 在現代云原生架構中,容器化應用已經成為主流部署方式。隨著容器數量的快速增長,如何高效地收集、存儲和分析容器日志成為了一個關鍵挑戰。傳統的日志收集方式往往存在以下問題: 日志分散在各個容器中,難…