国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)組(Array)

數(shù)組(Array)應(yīng)該是最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)之一,它由相同類型的元素組成的集合,并按照一定的順序存儲在內(nèi)存中。每個元素都有一個唯一的索引,可以用于訪問該元素。

	// java 數(shù)組示例
	int[] numbers1 = {2,0,2,3,9,23};
	// 或者
	int[] numbers2 = new int[6];

基本概念

數(shù)組基本概念 —— 數(shù)組索引、數(shù)組元素、數(shù)組長度

  • 數(shù)組索引(Index): 數(shù)組中的每個元素都有一個唯一的整數(shù)索引,從0開始計數(shù)。索引用于訪問數(shù)組中的元素。
  • 數(shù)組元素(Element): 數(shù)組中的元素必須是相同類型的數(shù)據(jù),可以是整數(shù)、浮點數(shù)、字符、對象等。
  • 數(shù)組長度(Length): 數(shù)組的長度是指數(shù)組中包含的元素數(shù)量。

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

其具備一些性質(zhì):

  • 連續(xù)存儲(Contiguous Memory): 數(shù)組中的元素在內(nèi)存中是連續(xù)存儲的,這意味著通過索引可以直接計算出元素的地址。
  • 隨機訪問時間(Constant Time Access): 由于元素的連續(xù)存儲和索引的存在,通過索引訪問數(shù)組中的某個元素通常只需要常數(shù)時間O(1)。( PS: 什么叫隨機訪問? 是計算機領(lǐng)域的一個重要概念,指的是能夠以大致相等的時間訪問存儲介質(zhì)中的任何數(shù)據(jù)元素,而不受其物理存儲位置順序的限制。通俗點說,隨便獲取任意一個元素。)

基本應(yīng)用(Basic)

數(shù)組的結(jié)構(gòu)本身比較簡單,在解決常見面試算法問題中靈活應(yīng)用數(shù)組索引來訪問數(shù)據(jù)是關(guān)鍵。

Leetcode 26. 刪除有序數(shù)組中的重復(fù)項【簡單】

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

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

LeetCode 674. 最長連續(xù)遞增序列【簡單】

給定一個未經(jīng)排序的整數(shù)數(shù)組,找到最長且 連續(xù)遞增的子序列,并返回該序列的長度。

連續(xù)遞增的子序列 可以由兩個下標(biāo) l 和 r(l < r)確定,如果對于每個 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是連續(xù)遞增子序列。

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

雙指針(Two Pointers)

一些資料上也有說雙指針?biāo)惴ǎP者看來更傾向于是一種技巧,定義的兩個索引指針 通過操作兩個索引指針來獲取問題答案。(PS:為什么這里叫指針?指針更多的是C語言中的概念,最早C語言解決算法問題比較多。)

根據(jù)指針移動 或者 所指位置不同,也有不少其他種分類的說法比如:對撞指針、快慢指針、分離指針等等;但其技巧本質(zhì)都是在于操作兩個指針?biāo)饕?,大可不必?yán)格定義這些名稱,需要的是抓住重點操作兩個指針。

LeetCode 167. 兩數(shù)之和 II - 輸入有序數(shù)組【中等】

給你一個下標(biāo)從 1 開始的整數(shù)數(shù)組 numbers ,該數(shù)組已按 非遞減順序排列 ,請你從數(shù)組中找出滿足相加之和等于目標(biāo)數(shù) target 的兩個數(shù)。如果設(shè)這兩個數(shù)分別是 numbers[index1] 和 numbers[index2] ,則 1 <= index1 < index2 <= numbers.length 。

以長度為 2 的整數(shù)數(shù)組 [index1, index2] 的形式返回這兩個整數(shù)的下標(biāo) index1 和 index2。
你可以假設(shè)每個輸入 只對應(yīng)唯一的答案 ,而且你 不可以 重復(fù)使用相同的元素。

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

LeetCode 15. 三數(shù)之和【中等】

給你一個整數(shù)數(shù)組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i != j、i != k 且 j != k ,同時還滿足 nums[i] + nums[j] + nums[k] == 0 。請你返回所有和為 0 且不重復(fù)的三元組。

注意:答案中不可以包含重復(fù)的三元組。

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

前綴和(Prefix Sum)

對于一些算法問題直接求解的思路可能計算量比較大,可以思考利用預(yù)處理一組特定的中間數(shù)據(jù)來進求解。類比就如同初中解一些幾何題通過幾條輔助線的解法,如果回顧學(xué)習(xí)輔助線的畫法,往往先了解常見的畫法;對于算法,前綴和就是“常見的輔助線畫法”。

針對一些算法問題需要快速計算數(shù)組某個連續(xù)區(qū)間的數(shù)值和時,先計算前綴和數(shù)組會是一個很好的策略。相關(guān)推導(dǎo)如下:

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)

LeetCode 1343. 大小為 K 且平均值大于等于閾值的子數(shù)組數(shù)目【中等】

給你一個整數(shù)數(shù)組 arr 和兩個整數(shù) k 和 threshold 。
請你返回長度為 k 且平均值大于等于 threshold 的子數(shù)組數(shù)目。

示例 1:
輸入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4
輸出:3
解釋:子數(shù)組 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分別為 4,5 和 6 。其他長度為 3 的子數(shù)組的平均值都小于 4 (threshold 的值)。

數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)文章來源地址http://www.zghlxwxcb.cn/news/detail-710837.html

總結(jié)下

  • 介紹了數(shù)組的基本結(jié)構(gòu),三個基本概念: 數(shù)組索引、數(shù)組元素、數(shù)組長度;
  • 數(shù)組類基礎(chǔ)題,關(guān)鍵在于靈活的三個基本概念;
  • 利用操作兩個數(shù)組索引的編程技巧來解決問題(雙指針);
  • 解決算法問題,求解C,可以先 A->B->C來進行思考,前綴和就是典型一種示例。

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)與算法 | 數(shù)組(Array)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JavaScript數(shù)據(jù)結(jié)構(gòu)與算法整理------數(shù)組

    ? ? ? ? 數(shù)組的標(biāo)準(zhǔn)定義: 一個存儲元素的線性集合,元素可以通過索引來任意存取,索引通常是數(shù)字,用來計算元素之間存儲位置的偏移量 ,幾乎所有的編程語言都有類似的數(shù)據(jù)結(jié)構(gòu),而JavaScript的數(shù)組略有不同。 ? ? ? ? JavaScript中的數(shù)組是一種特殊的對象,用來表示偏

    2023年04月24日
    瀏覽(32)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】尋找數(shù)組的中心下標(biāo)

    【數(shù)據(jù)結(jié)構(gòu)和算法】尋找數(shù)組的中心下標(biāo)

    Java基礎(chǔ)合集 數(shù)據(jù)結(jié)構(gòu)與算法合集 設(shè)計模式合集 多線程合集 分布式合集 ES合集 其他系列文章導(dǎo)航 文章目錄 前言 一、題目描述 二、題解 2.1 前綴和的解題模板 2.1.1 最長遞增子序列長度 2.1.2 尋找數(shù)組中第 k 大的元素 2.1.3 最長公共子序列長度 2.1.4 尋找數(shù)組中第 k 小的元素 2

    2024年02月04日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu)與算法-數(shù)組(附阿里面試題)

    ??????? 給你一個文件里面包含全國人民(14億)的年齡數(shù)據(jù)(0~180),現(xiàn)在要你統(tǒng)計每一個年齡?? 有多少人? ???????? 給定機器為 單臺+2CPU+2G內(nèi)存。不得使用現(xiàn)成的容器,比如map等。 (這一句可以忽略) ????????在以上情況下你該如何以最高效的方法來解決這個

    2024年02月13日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】使用數(shù)組的結(jié)構(gòu)實現(xiàn)鏈表(單向或雙向)

    【數(shù)據(jù)結(jié)構(gòu)和算法】使用數(shù)組的結(jié)構(gòu)實現(xiàn)鏈表(單向或雙向)

    上文我們通過結(jié)構(gòu)體的結(jié)構(gòu)實現(xiàn)了隊列 、以及循環(huán)隊列的實現(xiàn),我們或許在其他老師的教學(xué)中,只學(xué)到了用結(jié)構(gòu)體的形式來實現(xiàn)鏈表、隊列、棧等數(shù)據(jù)結(jié)構(gòu),本文我想告訴你的是,我們 可以使用數(shù)組的結(jié)構(gòu)實現(xiàn)鏈表、單調(diào)棧、單調(diào)隊列 目錄 前言 一、用數(shù)組結(jié)構(gòu)的好處 1.數(shù)

    2024年01月20日
    瀏覽(96)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法——TypeScript】數(shù)組、棧、隊列、鏈表

    【數(shù)據(jù)結(jié)構(gòu)與算法——TypeScript】數(shù)組、棧、隊列、鏈表

    解決問題 的過程中,不僅僅 數(shù)據(jù)的存儲方式會影響效率,算法的優(yōu)劣也會影響效率 什么是算法? 定義: ?? 一個有限指令集,每條指令的描述不依賴于言語 (編寫指令:java/c++/ts/js) ?? 接收一些輸入(有些情況下不需要輸入)(接收:排序:無序數(shù)組) ?? 產(chǎn)生輸出 (

    2024年02月14日
    瀏覽(45)
  • 數(shù)據(jù)結(jié)構(gòu)與算法·第5章【數(shù)組和廣義表】

    數(shù)據(jù)結(jié)構(gòu)與算法·第5章【數(shù)組和廣義表】

    兩種順序映象的方式: 以行序為主序(低下標(biāo)優(yōu)先); 以列序為主序(高下標(biāo)優(yōu)先)。 而 n n n 維數(shù)組: LOC(x1, x2, ..., xn) = LOC(0, 0, ..., 0) + [(x1 × b1 + x2) × b2 + x3] × b3 + ... + xn 數(shù)據(jù)類型定義 其中: A.bounds是每一維可以放多少元素: a[A.bounds[0]][A.bounds[1]][A.bounds[2]]…… A.constants是指向每

    2024年02月08日
    瀏覽(23)
  • 算法與數(shù)據(jù)結(jié)構(gòu)(二十四)最優(yōu)子結(jié)構(gòu)原理和 dp 數(shù)組遍歷方向

    算法與數(shù)據(jù)結(jié)構(gòu)(二十四)最優(yōu)子結(jié)構(gòu)原理和 dp 數(shù)組遍歷方向

    注:此文只在個人總結(jié) labuladong 動態(tài)規(guī)劃框架,僅限于學(xué)習(xí)交流,版權(quán)歸原作者所有; 本文是兩年前發(fā)的 動態(tài)規(guī)劃答疑篇open in new window 的修訂版,根據(jù)我的不斷學(xué)習(xí)總結(jié)以及讀者的評論反饋,我給擴展了更多內(nèi)容,力求使本文成為繼 動態(tài)規(guī)劃核心套路框架 之后的一篇全面

    2024年02月12日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】Kadane‘s算法(動態(tài)規(guī)劃、最大子數(shù)組和)

    【數(shù)據(jù)結(jié)構(gòu)與算法】Kadane‘s算法(動態(tài)規(guī)劃、最大子數(shù)組和)

    Kadane\\\'s 算法是一種用于解決最大子數(shù)組和問題的動態(tài)規(guī)劃算法。這類問題的目標(biāo)是在給定整數(shù)數(shù)組中找到一個連續(xù)的子數(shù)組,使其元素之和最大(數(shù)組含有負數(shù))。 算法的核心思想是通過迭代數(shù)組的每個元素,維護兩個變量來跟蹤局部最優(yōu)解和全局最優(yōu)解。 以下是Kadane’s算

    2024年03月22日
    瀏覽(28)
  • 頭歌(C語言)-數(shù)據(jù)結(jié)構(gòu)與算法-數(shù)組(共7關(guān))

    任務(wù)描述 本關(guān)任務(wù):將十個數(shù)進行從大到小的順序進行排列。 相關(guān)知識(略) 編程要求 根據(jù)提示,在右側(cè)編輯器 Begin-End 處補充代碼。 輸入 輸入十個整數(shù)。 輸出 以從大到小的順序輸出這個十個數(shù)。 測試說明 樣例輸入: 1 2 3 4 5 6 7 8 9 10 樣例輸出: 10 9 8 7 6 5 4 3 2 1 代碼:

    2024年02月11日
    瀏覽(31)
  • 數(shù)據(jù)結(jié)構(gòu)與算法教程,數(shù)據(jù)結(jié)構(gòu)C語言版教程?。ǖ谖宀糠帧?shù)組和廣義表詳解)五

    數(shù)據(jù)結(jié)構(gòu)與算法教程,數(shù)據(jù)結(jié)構(gòu)C語言版教程!(第五部分、數(shù)組和廣義表詳解)五

    數(shù)組和廣義表,都用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù)。 數(shù)組存儲結(jié)構(gòu),99% 的編程語言都包含的存儲結(jié)構(gòu),用于存儲不可再分的單一數(shù)據(jù);而廣義表不同,它還可以存儲子廣義表。 本章重點從矩陣的角度討論二維數(shù)組的存儲,同時講解廣義表的存儲結(jié)構(gòu)以及有關(guān)其廣度和

    2024年01月23日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包